<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我爱水煮鱼&#187; 缓存</title>
	<atom:link href="http://fairyfish.net/tag/cache/feed/" rel="self" type="application/rss+xml" />
	<link>http://fairyfish.net</link>
	<description>关注 WordPress，关注互联网</description>
	<lastBuildDate>Fri, 10 Feb 2012 15:15:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>13 个 WordPress 提速技巧</title>
		<link>http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/</link>
		<comments>http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 11:24:19 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 技巧]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1895</guid>
		<description><![CDATA[性能是一个成功网站的关键因素，任何人都不喜欢访问速度超慢的网站。WordPress 的开放性，造就 WordPress 有着成千上万的插件，使得 WordPress 比以往任何时候都更受欢迎，但是开放也在一定程度上使得 WordPress 的性能下降。所以当你发现你的 WordPress 站点性能很差，下面是你应该去做的一些事情：]]></description>
			<content:encoded><![CDATA[<p>性能是一个网站成功的非常关键因素，任何人都不喜欢访问速度超慢的网站。WordPress 的开放性造就 WordPress 有着成千上万的插件，使得 WordPress 比以其他 CMS 程序更受欢迎，但是开放也在一定程度上使得 WordPress 的性能不是很好，所以当你发现你的 WordPress 站点性能很差，你应该尝试通过下面的方式去优化它：</p>
<p><span id="more-1895"></span></p>
<h2>一些最基本，简单的提速方法</h2>
<p><strong>1. 更新 WordPress 到最新的发行版本</strong></p>
<p>WordPress 每次版本的升级都有对性能的改进，所以升级到 WordPress 最新的发行版本是改进性能的第一步。</p>
<p><strong>2. 删除没用的插件和更新正在使用的插件</strong></p>
<p>删除任何你不再使用的插件，并从服务器上删除它们，这样会明显加速 WordPress 速度，因为 WordPress 运行的时候会检查每个插件是否被启用，并且导入激活的插件。</p>
<p>另外最好把现在使用的插件更新到最新版本，因为插件的开发者发布新版本一般来说他们应该是在某种程度上优化了插件工作效率。</p>
<p><strong>3. 最小化 PHP 和数据库查询</strong></p>
<p>如果每次导入你服务器上的一个页面，服务器都要执行 PHP 语句和数据库查询，这样速度是不会快的，如果你把一些 PHP 语句直接改成静态的 HTML 代码，这样每次导入页面，浏览器只要读取 HTML 就好了。</p>
<p><strong>4. 使用 PHPmyAdmin 优化和修复数据库</strong></p>
<p>我们至少应该每个星期登陆 PHPMyAdmin 去优化下数据库，选择 WordPress 数据库，选择所有的表，选择优化数据表和修复，你会惊奇的发现这个技巧的效果非常好，它节省了数据库的 10% 的空间，并且效率也提高了。</p>
<p class="entry_img"><img src="http://pic.fairyfish.com/2009/03/PHPMyAdmin-Optimize-Table.jpg" alt="PHPMyAdmin Optimize Table" /><br />
使用 PHPmyAdmin 优化和修复数据库</p>
<h2>优化图片和其他静态文件</h2>
<p><strong>5. 使用可靠的图片存储服务</strong></p>
<p>可以尝试把一些常用的网页图片，CSS，JavaScript 和其他一些静态文件存到 Amazon S3 这样的存储服务中，你会发现服务器的 CPU 时间和内存使用会下降很多，这里有一个<a href="http://www.labnol.org/internet/host-images-files-on-amazon-s3-storage/4923/"> Amazon S3 的向导</a>。</p>
<p class="entry_img"><img src="http://pic.fairyfish.com/2009/03/amazon-s3.jpg" alt="Amazon S3" /><br />
使用 Amazon S3 存储图片</p>
<p>不过 Amazon 的 S3 存储服务收费的，价格虽然比较低的，但是个人感觉还是不特别适合国内的 blogger。</p>
<p><strong>6. 通过 <a href="http://toki-woki.net/p/Shrink-O-Matic/">Shrink O’Matic </a>这个工具来优化图片</strong></p>
<p>Shrink O’Matic 是一个 AIR 程序，它能非常容易批量修改图片，并且支持 JPG, GIF 和 PNG 格式。只要简单的拖拉图片，它就能帮你修改图片的大小，另外它还有一些选项，让你能够选择输出大小，名字和格式。</p>
<p class="entry_img"><img src="http://pic.fairyfish.com/2009/03/Shrink-O-Matic.jpg" alt="Shrink O’Matic" /><br />
Shrink O’Matic </p>
<h2>全面提高性能</h2>
<p><strong>7. 安装 WP Super Cache 插件</strong></p>
<p>关于 <a href="http://fairyfish.net/2008/10/27/wp-super-cache/">WP Super Cache</a> 这个插件，我已经有详细的介绍。这里简单说，就是它能够产生静态的 HTML 文件，这些 HTML 文件产生之后，你的服务器就不用再去运行 PHP 脚本和数据库查询，所以它能够明显的加快你的博客速度。</p>
<p><strong>8. PHP Speedy WP</strong></p>
<p><a href="http://aciddrop.com/2008/12/11/php-speedy-wp-05-now-works-with-wordpress-27/">PHP Speedy WP </a>能够会自动把所有的 JS 和 CSS  文件组合成两个文件，这样就非常简单的加速 WordPress 站点和提高你的博客的响应时间。并且 CSS 的背景图片被转换成 data URIs，就大大降低了 HTTP 请求，并且重要的是，它和 IE 兼容，尽管 IE 不支持 data URIs。但是不幸的是，PHP speedy 还有一些缺陷，组装之后的 JavaScript 文件是放在页面顶部而不是底部，所以这个会在 WP Super Cache 开启的时候不工作，当然了已经有人提供了<a href="http://www.prelovac.com/vladimir/optimize-wordpress-page-loading-time-with-php-speedy-and-wp-super-cache">解决方案</a>。</p>
<p class="entry_img"><img src="http://pic.fairyfish.com/2009/03/php-speedy-wp.jpg" alt="PHP Speedy WP" /><br />
PHP Speedy WP</p>
<p><strong>9. WP CSS</strong></p>
<p>这个插件会 GZIP 压缩和删除 CSS 文件中的空白，并且会把 style.css 文件中的  @import  直接放入，这个插件还可以设置 CSS 文件的缓存过期时间。</p>
<p><strong>10. DB Cache</strong></p>
<p><a href="http://madlabsmedia.com/admin/public/index.php/">DB Cache</a> 这个插件在给定的时间内可以缓存数据库的每一次查询，并且速度很快，而且只用到很少的磁盘空间用于缓存。</p>
<p><strong>11. 使用 Google 的 AJAX Libraries API 来提速</strong></p>
<p><a href="http://fairyfish.net/2008/05/29/google-ajax-libraries-api/">AJAX Libraries API</a> 就是 Google 把一些非常流行 Javsacript 框架（jQuery, prototype, script.aculo.us, MooTools, dojo）放到 Google 的服务器上，使得大家可以充分使用 Google 的服务器资源之外，更重要的是能够提高你的速度。另外<a href="http://fairyfish.net/2008/07/09/wordpress-plugin-google-ajax-libraries/">WordPress 也有 AJAX Libraries 相关的插件</a>。</p>
<p><strong>12. 显示页面导入时间和查询次数</strong></p>
<p>这里有段代码能够让你插入到你的模板中让你知道页面导入的时间，和有多少数据库查询，这个技巧能够让你知道你博客优化的程度。</p>
<pre>
<span style="color: Gray;">在 </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"> </span><span style="color: Blue;">timer_stop</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Gray;">&nbsp; 秒钟有 </span><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"> </span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: Blue;">get_num_queries</span><span style="color: Olive;">()</span><span style="color: Gray;">; </span><span style="color: Blue;">?&gt;</span><span style="color: Gray;"> 次查询。</span>
</pre>
<p><strong>13. Optimize DB</strong></p>
<p>MySQL 是一个非常好的数据库，但是它不能自己整理和清理碎片和垃圾。Optimize DB 这个插件可以运行优化数据库的命令，加速你的 WordPress 数据库的速度，这里有一篇关于<a href="http://fairyfish.net/2008/12/14/optimize-db/"> Optimize DB 插件</a>的详细介绍。</p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/" title="13 个 WordPress 提速技巧">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/&title=13+%E4%B8%AA+WordPress+%E6%8F%90%E9%80%9F%E6%8A%80%E5%B7%A7&tags=WordPress 技巧, 缓存, "  title="13 个 WordPress 提速技巧">收藏本文</a>
 / <a href="http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/#comments" title="13 个 WordPress 提速技巧">35条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2010/06/27/wordpress-post-thumbnail/" title="WordPress 日志缩略图功能">WordPress 日志缩略图功能</a></li>
<li><a href="http://fairyfish.net/m/show-unpublish-post-for-visitor/" title="WordPress 技巧：给普通用户显示未发布的文章">WordPress 技巧：给普通用户显示未发布的文章</a></li>
<li><a href="http://fairyfish.net/m/show-admin-bar-only-for-admins/" title="WordPress 技巧：只给管理员显示 Admin Bar">WordPress 技巧：只给管理员显示 Admin Bar</a></li>
<li><a href="http://fairyfish.net/m/use-shortcodes-in-theme-files/" title="WordPress 技巧：在主题的文件中使用 Shortcode">WordPress 技巧：在主题的文件中使用 Shortcode</a></li>
<li><a href="http://fairyfish.net/m/only-update-wp-core/" title="WordPress 技巧：让 WP 更新的时候只更新核心">WordPress 技巧：让 WP 更新的时候只更新核心</a></li>
<li><a href="http://fairyfish.net/m/maintenance-sucks-problem/" title="“正在执行例行维护，请一分钟后回来。”时间过长解决方法">“正在执行例行维护，请一分钟后回来。”时间过长解决方法</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=1092677527&amp;utmr=-&amp;utmp=%2Frss%2F2009%2F03%2F29%2F13-great-wordpress-speed-tips-tricks%2F&amp;utmdt=13+%E4%B8%AA+WordPress+%E6%8F%90%E9%80%9F%E6%8A%80%E5%B7%A7&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2009/03/29/13-great-wordpress-speed-tips-tricks/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>WordPress 缓存插件介绍</title>
		<link>http://fairyfish.net/2008/06/10/wordpress-cache-plugins/</link>
		<comments>http://fairyfish.net/2008/06/10/wordpress-cache-plugins/#comments</comments>
		<pubDate>Tue, 11 May 2010 01:40:45 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1406</guid>
		<description><![CDATA[WordPress 缓存插件综述，WordPress 缓存插件有很多种，有文件缓存，内存缓存，HTML 静态缓存。你需要根据自己的服务器的特点给自己的 WordPress 博客选择相应的缓存插件。]]></description>
			<content:encoded><![CDATA[<p>大家可能都有这样的经验，使用 WordPress 一段时间，并且安装了一些的插件之后，博客的反应速度会变慢，甚至很慢，如果服器不够强劲，比如你使用的是一些 Oversell 的主机，而非<a href="http://fairyfish.net/2009/06/24/mt/#20"> MT 这样的 VPS</a>，并且流量很大，那么你可能会噩梦相随，你会经常因为 CPU 超标，而被停掉服务。如果你的预算不够不能更换服务器，这个时候我们应该使用 WordPress 缓存插件来降低 WordPress 对服务器的资源占用。</p>
<p>WordPress 缓存插件有很多种，这里不能一一讲解，只能介绍我熟悉的几种给大家做个简单的介绍，你可以根据自己的服务器的特点给自己的 WordPress 博客选择相应的缓存插件：</p>
<p><span id="more-1406"></span></p>
<h2>文件缓存</h2>
<p>在 WordPress 2.5 版本之前 WordPress 可以使用文件缓存，需要在 <code>wp-config.php</code> 文件添加 <code>define('ENABLE_CACHE','true');</code> 即可启用。2.5 版本之后，WordPress 取消了文件缓存和 <code>ENABLE_CACHE</code> 这个全局变量。</p>
<p>但是如果你还想继续使用文件缓存，可以安装这个插件：<a href="http://neosmart.net/blog/2008/file-based-extension-to-the-wordpress-object-cache/">File-Based Extension to the WordPress Object Cache</a>。把下载下来的文件上传到 <code>wp-content</code> 目录下，注意不是 <code>plugins</code> 目录下。</p>
<p>文件缓存其实把网站的动态内容根据功能分成很多个部分，然后分别存储为文件。这样就会有一个问题，就是每次访问页面的时候，要读取多个缓存的文件，如果你服务器的硬盘速度不是很快，这样就会造成你的服务器的 I/O 拥塞问题，所以 WordPress 2.1 默认就禁止文件缓存，2.5 更是取消了。</p>
<h2>内存缓存</h2>
<p>从 2.5 版本开始，WordPress 建议使用内存缓存，什么是内存缓存，就是把经常被访问的动态内容保存到内存中去，下一次访问的时候，直接到内存中获取内容，这样就没有上面所介绍文件缓存的 I/O 操作，并且 SQL 查询也减少了。</p>
<p>不过内存缓存需要你的服务器支持（一般的虚拟主机都是不支持的），目前支持内存缓存的插件有：</p>
<ul>
<li><a href="http://neosmart.net/dl.php?id=12">XCache-Based Caching Extension</a></li>
<li><a href="http://neosmart.net/dl.php?id=13">eAccelerator-Based Caching Extension</a></li>
<li><a href="http://ryan.wordpress.com/2005/12/23/memcached-backend/">Memcached-Based Caching Extension</a></li>
<li><a href="http://txfx.net/files/wordpress/apc-object-cache.phps">APC-Based Caching Extension</a></li>
</ul>
<p>选择什么内存缓存插件，需要你根据你自己的服务器的配置，比如你的服务器配置了 Memcached 的 PHP 扩展，你就可以使用 Memecached 的插件。我曾经使用的服务器含有  Memcached 的 PHP 扩展，所以这里有<a href="http://fairyfish.net/2008/03/10/wordpress-memcached/">安装 Memecached 缓存插件的介绍</a>。</p>
<p>内存缓存和文件缓存一个相同的地方也是网站的动态内容根据功能分成很多个部分，分别对每个部分缓存，而不是把这个页面当作一个整体缓存了，所以访问一个页面还是需要从内存中读取多个内容，所有就有人开发了 <a href="http://fairyfish.net/2008/07/22/batcache/">Batcache 插件</a>，Batcache 在内存中缓存整个页面，这样再次访问 WordPress 页面的时候，则直接获从内存中获取这个内存文件即可。这样就减少了程序的运行，再次降低了 CPU 使用率，也进一步加速了速度，特别是对一些流量非常高的日志来说，效果特别好。</p>
<h2>HTML 静态缓存</h2>
<p>但是绝大部分 blogger 使用的服务器都不支持内存缓存所需的这些 PHP 或者服务器扩展，所以我们需要用到 HTML 静态化缓存插件，这类型的插件可以把 WordPress 页面缓存一个静态的 HTML 页面存到服务器上，下次访问该页面的时候，不需要再次运行 PHP 代码，直接从服务器返回这个 HTML 文件即可，这样就大大降低了 CPU 的占用率，但是使用 HTML 静态化缓存插件，也有一个不好的地方，比如日志流量，最新日志，这些动态的内容不会时时更新，虽然我们可以通过 Javascript 等方法解决这个问题，但是对于普通用户来说还是太麻烦了。这方面插件用的最多的是 <a href="http://ocaoimh.ie/wp-super-cache/">WordPress Super Cache</a> 和 <a href="http://www.storyday.com/html/y2007/958_cos-html-cache-10.html">cos html cache</a>。</p>
<p>我目前使用 WP Super Cache 来缓存 WordPress，因为 WP Super Cache 设置更加灵活，可以区分普通浏览用户和注册用户，并且还支持手机浏览等。这里是我<a href="http://fairyfish.net/2008/10/27/wp-super-cache/">对 WP Super Cache 插件的详细介绍</a>。</p>
<h2>总结</h2>
<p>那么你应该如何缓存你的 WordPress，下面是我的原则：</p>
<ol>
<li>只使用必要的插件。</li>
<li>对使用<a href="http://fairyfish.net/2007/12/31/optimize-plugin-to-accelerate-wordpress/">插件进行必要的优化</a>。</li>
<li>根据你自己博客的实际静态化你的 WordPress。</li>
<li>如果服务器支持，尽可能使用内存缓存。</li>
</ol>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/06/10/wordpress-cache-plugins/&title=WordPress+%E7%BC%93%E5%AD%98%E6%8F%92%E4%BB%B6%E4%BB%8B%E7%BB%8D&tags=WordPress 插件, 缓存, "  title="WordPress 缓存插件介绍">收藏本文</a>
 / <a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/#comments" title="WordPress 缓存插件介绍">24条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">WP Super Cache 技巧：实时更新首页</a></li>
<li><a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">最佳 WordPress 缓存插件：WP Super Cache</a></li>
<li><a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">WordPress 内存缓存终极加速插件：Batcache</a></li>
<li><a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/" title="使用 PostMeta 提速 WordPress 插件">使用 PostMeta 提速 WordPress 插件</a></li>
<li><a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">使用 WordPress 对象缓存</a></li>
<li><a href="http://fairyfish.net/m/wp-emoji/" title="在你的博客里显示 Emoji 表情：WP-Emoji">在你的博客里显示 Emoji 表情：WP-Emoji</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=1219563846&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F06%2F10%2Fwordpress-cache-plugins%2F&amp;utmdt=WordPress+%E7%BC%93%E5%AD%98%E6%8F%92%E4%BB%B6%E4%BB%8B%E7%BB%8D&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/06/10/wordpress-cache-plugins/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>WP Super Cache 技巧：实时更新首页</title>
		<link>http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/</link>
		<comments>http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:09:13 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[WP Super Cache]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=2032</guid>
		<description><![CDATA[WP Super Cache 把整个页面直接生成 HTML 文件，使得 WordPress 博客将显著的提速。如果 WordPress 的首页显示的不是最新日志，而是一个页面，并且这个页面包含实时更新的部分，那么就会存在一个问题，那么这个页面就不会实时更新。我们可以通过 WP Super Cache 提供的 wp_cache_post_edit 函数刷新首页。]]></description>
			<content:encoded><![CDATA[<p><a href="http://fairyfish.net/2008/10/27/wp-super-cache/">WP Super Cache 是我推荐的最佳 WordPress 缓存插件</a>，它把整个页面直接生成 HTML 文件，这样 Apache 就不用解析 PHP 脚本，通过使用这个插件，能使得你的 WordPress 博客将显著的提速。<br />
<span id="more-2032"></span><br />
如果 WordPress 的首页显示的不是最新日志，而是一个页面，并且这个页面包含实时更新的部分，如<a href="http://fairyfish.net/">我爱水煮鱼</a>的首页包含最新日志，那么就会存在一个问题，那么这个页面就不会实时更新。</p>
<p>这里我提供一个技巧，可以让你在使用 WP Super Cache 的这个静态缓存插件提速的同时，也能够让首页实时更新，WP Super Cache 是通过 <code>wp_cache_post_edit</code> 这个函数来编辑缓存的，它的参数是日志或者页面的 ID。</p>
<p>所以我们首先获取用于显示首页的页面的 ID，然后在日志更新或者删除的时候，或者有新留言的时候（如果首页没有包含最新留言，这个可不必），刷新首页。所以大致的代码如下：</p>
<pre>
<span style="color: Blue;">&lt;?php</span><span style="color: Gray;">
</span><span style="color: Blue;">add_action</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">publish_post</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">refresh_front_page</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//发布或者更新日志时候刷新首页</span><span style="color: Gray;">
</span><span style="color: Blue;">add_action</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">edit_post</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">refresh_front_page</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//有新留言或者留言被删除的时候刷新首页</span><span style="color: Gray;">
</span><span style="color: Blue;">add_action</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">delete_post</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">refresh_front_page</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//删除日志时候刷新首页</span><span style="color: Gray;">
</span><span style="color: Blue;">add_action</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">publish_phone</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">refresh_front_page</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//通过 email 发布日志之后刷新首页</span><span style="color: Gray;">
&nbsp;
</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">refresh_front_page</span><span style="color: Olive;">(){</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$front_page_id</span><span style="color: Gray;"> = </span><span style="color: Blue;">get_option</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">page_on_front</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//获取显示首页的页面 ID</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">wp_cache_post_edit</span><span style="color: Olive;">(</span><span style="color: #00008b;">$front_page_id</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//刷新该页</span><span style="color: Gray;">
</span><span style="color: Olive;">}</span><span style="color: Gray;">
</span><span style="color: Blue;">?&gt;</span>
</pre>
<p>把这段代码复制到主题的 functions.php 即可。</p>
<p>当然如果你想刷新某个页面，也可以是用 <code>wp_cache_post_edit</code> 这个刷新它，参数是页面的 ID。</p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/&title=WP+Super+Cache+%E6%8A%80%E5%B7%A7%EF%BC%9A%E5%AE%9E%E6%97%B6%E6%9B%B4%E6%96%B0%E9%A6%96%E9%A1%B5&tags=WordPress 插件, WP Super Cache, 缓存, "  title="WP Super Cache 技巧：实时更新首页">收藏本文</a>
 / <a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/#comments" title="WP Super Cache 技巧：实时更新首页">19条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">最佳 WordPress 缓存插件：WP Super Cache</a></li>
<li><a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">WordPress 内存缓存终极加速插件：Batcache</a></li>
<li><a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">WordPress 缓存插件介绍</a></li>
<li><a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/" title="使用 PostMeta 提速 WordPress 插件">使用 PostMeta 提速 WordPress 插件</a></li>
<li><a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">使用 WordPress 对象缓存</a></li>
<li><a href="http://fairyfish.net/m/wp-emoji/" title="在你的博客里显示 Emoji 表情：WP-Emoji">在你的博客里显示 Emoji 表情：WP-Emoji</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=575986665&amp;utmr=-&amp;utmp=%2Frss%2F2009%2F12%2F05%2Fwp-super-cache-refresh-front-page%2F&amp;utmdt=WP+Super+Cache+%E6%8A%80%E5%B7%A7%EF%BC%9A%E5%AE%9E%E6%97%B6%E6%9B%B4%E6%96%B0%E9%A6%96%E9%A1%B5&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>最佳 WordPress 缓存插件：WP Super Cache</title>
		<link>http://fairyfish.net/2008/10/27/wp-super-cache/</link>
		<comments>http://fairyfish.net/2008/10/27/wp-super-cache/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:01:11 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[WP Super Cache]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1713</guid>
		<description><![CDATA[WP Super Cache 是 WordPress 官方开发人员 Donncha 开发，是当前最高效也是最灵活的 WordPress 静态缓存插件。它把整个网页直接生成 HTML 文件，这样 Apache 就不用解析 PHP 脚本，通过使用这个插件，能使得你的 WordPress 博客将显著的提速。]]></description>
			<content:encoded><![CDATA[<p><a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a> 是 WordPress 官方开发人员 <a href="http://ocaoimh.ie/">Donncha</a> 开发，是当前最高效也是最灵活的 WordPress 静态缓存插件。它把整个网页直接生成 HTML 文件，这样 Apache 就不用解析 PHP 脚本，通过使用这个插件，能使得你的 WordPress 博客将显著的提速。<br />
<span id="more-1713"></span></p>
<h2>WP Super Cache 基本介绍</h2>
<p>WP Super Cache 是基于 Ricardo Galli Granada 的 <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cache 2</a>。WP-Cache 2 可以缓存你的 WordPress 博客使得不用再次访问数据库，但是它产生的是 PHP 文件而不是 HTML 文件，所以还需要 PHP 引擎去解析它们。而 WP Super Cache 则直接产生 HTML 文件，所以服务器不用解析甚至一行 PHP 代码，所以缓存之后的速度就和访问你服务器上的一张图片一样快。</p>
<h2>WP Super Cache 是如何工作的 </h2>
<p>一半常规的缓存办法是手工把动态页面保存为 HTML 代码，WP Super Cache 也是通过同样的方式的，但是通过自动的方式完成这个过程。</p>
<p>当你一个访问者来的你的站点，他没有登入或者也没有留言，这样他得到是一个在 WordPress cache 文件夹下的 supercache 子文件夹下的纯静态文件，其实你都可以自己到上面的 supercache 目录下去查看同样的永久链接的 HTML 文件的备份。判断一个页面是否已经被缓存了，查看该页面的源代码，看看最后一行是否有 &lt;!&#8211; super cache &#8211;&gt; 或者 &lt;!&#8211; super cache gz &#8211;&gt;。</p>
<p>如果访问者已经登陆或者留了言，就会返回 WP Cache 函数生成的页面，并且最后一行会有 &lt;!&#8211; Cached page served by WP-Cache &#8212; &gt;</p>
<h2>WP Super Cache 基本使用</h2>
<p>上传 WP Super Cache 到插件目录，并在 Plugin 目录下激活之后，就可以到 Setting >  WP Super Cache 进行详细配置。</p>
<h3>WP Super Cache Status</h3>
<p>首先是三个选项：</p>
<ul>
<li>ON (WP Cache and Super Cache enabled)</li>
<li>HALF ON (Super Cache Disabled, only legacy WP-Cache caching.)</li>
<li>OFF (WP Cache and Super Cache disabled)</li>
</ul>
<p>默认情况下，WP Super Cache 是没有开启的，所以在这里选择下，需按则第一个，就是 Super Cache，缓存为静态文件，如果第二种情况呢，则和 WP-Cache 一致。</p>
<p>Proudly tell the world your server is Digg proof! (places a message in your blog&#8217;s footer)<br />
这个是说在你的  footer 显示一条信息告诉读者该博客已经缓存了，一般不要这样做。</p>
<p>Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)<br />
这个是说发布新日志的时候清理所有缓存，这个肯定不能这么干了。</p>
<h3>Super Cache Compression</h3>
<p>启动这个则会成生 <a href="http://fairyfish.net/2008/04/07/gzip/">gzip</a> 压缩，节省你的带宽。</p>
<h3>Mod Rewrite Rules</h3>
<p>WP Super Cache 是通过 Mod Rewrite 实现访问静态文件的，所以这里在是显示添加的 Mod Rewrite 规则。</p>
<h3>Expiry Time and Garbage Collection</h3>
<p>过期时间和垃圾收集，这里主要设置缓存文件过期时间，和多久删除一次过期的缓存文件。个人建议：一般缓存时间设置为1天（86400）左右，缓存删除时间为1个小时一次。</p>
<h3>Accepted filenames, rejected URIs</h3>
<p>这里设置一些链接不需要缓存，并且可以设置特例。</p>
<h3>Rejected User Agents</h3>
<p>这里设置某些 User Agents 来访问的时候不会缓存。比如 Google 和百度爬虫等。</p>
<h3>Cache Contents</h3>
<p>这里显示你博客缓存文件和过期文件的数量，你可以手工删除缓存文件和过期文件，因为 WP Super Cache 有垃圾回收机制，所以这里不帮不用手工删除，如果当你测试某个插件，看不到效果的时候，如果确定是缓存的原因，你可以到这里手工删除测试下。</p>
<h3>Lock Down</h3>
<p>一般情况下，某篇日志如果有了新留言，就会更新缓存文件，不过这篇日志是否已经到了缓存时间，但是在某种情况，你预料到你的博客可能会有很大流量和留言，候重复更新缓存文件可能并不是很好的选择，速度反而更慢，这个时候你就可以锁定缓存文件，新留言不再更新缓存日志。</p>
<p>插件作者也给出了一段代码，如果你的博客锁定了之后，可以通过判断一个变量 <code>WPLOCKDOWN</code> 是否存在告来诉读者，你博客已经锁定，待会才会更新，当然了，一般博客不建议使用。</p>
<h3>Directly Cached Files</h3>
<p>直接缓存文件，根据永久链接直接缓存，比如你的关于页面是不太更新，你就可以直接缓存它到你的 about 目录下（假如你的关于页面的 slug 是 about），这个直接缓存不会过期。适合一些经常性不更新的静态页面。</p>
<h3>Configuration messed up?</h3>
<p>因为上面那么多配置，你可能搞糊涂了，那么这里可以让你一键恢复到默认。</p>
<h3>Cache Plugins</h3>
<p>缓存插件还支持附加插件，比如作者自己就提供一个插件：<a href="http://ocaoimh.ie/no-adverts-for-friends/">No Adverts for Friends</a>，不对朋友显示广告。</p>
<h2>附加说明</h2>
<ul>
<li>登陆了和留言之后是看不到静态缓存页面的，看到的效果和原来的 WP-Cache 插件一样的，一般来说留言的同学不是那么多。</li>
<li>这个插件通过 Mod Rewrite 来是实现访问静态缓存页面，所以首先你的主机要支持 Mod Rewrite，然后你要在 WordPress 后台启动永久链接。</li>
<li>一些动态的时时更细的插件，如 Recent Comments，Recent Posts 等，一个很好的解决方法是通过 Javascript 来实现。所以同理 Sidebar 更新也只能在静态页面刷新的时候更新。我以后会讲解下如何实现 JS 实现 Recent Comment, Recent Post, 和 PostViews 。</li>
<li>不要使用性能很差的主机，尽管缓存了，但是还是不行的，这里我个人推荐我和朋友一起搞的主机：<a href="http://wfans.org/forums/forum-5-1.html">WFANS 主机</a>。</li>
<li>还有很多依赖于刷新数据的插件，如 SK2, Bad Behaviour 等可能不起作用。缓存总归会带来一点那个灵活性的不足。</li>
</ul>
<p>这个插件我也使用的时间也不是很长，如果大家有什么新的发现，也可以留言告诉我！ <img src='http://fairyfish.b0.upaiyun.com/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/10/27/wp-super-cache/&title=%E6%9C%80%E4%BD%B3+WordPress+%E7%BC%93%E5%AD%98%E6%8F%92%E4%BB%B6%EF%BC%9AWP+Super+Cache&tags=WordPress 插件, WP Super Cache, 缓存, "  title="最佳 WordPress 缓存插件：WP Super Cache">收藏本文</a>
 / <a href="http://fairyfish.net/2008/10/27/wp-super-cache/#comments" title="最佳 WordPress 缓存插件：WP Super Cache">63条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">WP Super Cache 技巧：实时更新首页</a></li>
<li><a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">WordPress 内存缓存终极加速插件：Batcache</a></li>
<li><a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">WordPress 缓存插件介绍</a></li>
<li><a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/" title="使用 PostMeta 提速 WordPress 插件">使用 PostMeta 提速 WordPress 插件</a></li>
<li><a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">使用 WordPress 对象缓存</a></li>
<li><a href="http://fairyfish.net/m/wp-emoji/" title="在你的博客里显示 Emoji 表情：WP-Emoji">在你的博客里显示 Emoji 表情：WP-Emoji</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=553943621&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F10%2F27%2Fwp-super-cache%2F&amp;utmdt=%E6%9C%80%E4%BD%B3+WordPress+%E7%BC%93%E5%AD%98%E6%8F%92%E4%BB%B6%EF%BC%9AWP+Super+Cache&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/10/27/wp-super-cache/feed/</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>WordPress 内存缓存终极加速插件：Batcache</title>
		<link>http://fairyfish.net/2008/07/22/batcache/</link>
		<comments>http://fairyfish.net/2008/07/22/batcache/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 08:47:31 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Memcached]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1576</guid>
		<description><![CDATA[Batcache 使用 Memcached 来缓存页面。默认 WordPress 启用 Memcached 缓存之后，每次访问 WordPress 页面，都要从内存中获取多个缓存文件。而 Batcache 则把这些缓存整理成一个文件，这样再次访问 WordPress 页面的时候，则直接获从内存中获取这个内存文件即可。这样就减少了程序的运行，降低了 CPU 使用率，另外由于直接从内存中获取缓存的文件，进一步加速了速度。 安装 安装这个插件有点麻烦，不过只要按照以下步骤进行就可以： 安装好 Memcached，详细步骤请参考：如何让 WordPress 启用 Memcached 缓存。 所以你的服务器要求要和安装 Memcached 的要求一致。 上传 advanced-cache.php 到 /wp-content/ 目录。 在 wp-config.php 添加以下代码激活 Batcache: define('WP_CACHE', true); 然后尝试多次载入页面查看源代码，应该在 之前可以看到一些 Batcache 状态代码。 可以修改 advanced-cache.php 开始的一些代码来调整选项。 可选的上传 batcache.php 到你的 /wp-content/plugins/ 目录。 &#62;&#62;&#62;继续阅读全文 ... &#169; 我爱水煮鱼 / [...]]]></description>
			<content:encoded><![CDATA[<p>Batcache 使用 Memcached 来缓存页面。默认 WordPress 启用 Memcached 缓存之后，每次访问 WordPress 页面，都要从内存中获取多个缓存文件。而 Batcache 则把这些缓存整理成一个文件，这样再次访问 WordPress 页面的时候，则直接获从内存中获取这个内存文件即可。这样就减少了程序的运行，降低了 CPU 使用率，另外由于直接从内存中获取缓存的文件，进一步加速了速度。<br />
<span id="more-1576"></span><br />
<strong>安装</strong></p>
<p>安装这个插件有点麻烦，不过只要按照以下步骤进行就可以：</p>
<ol>
<li>安装好 Memcached，详细步骤请参考：<a href="http://fairyfish.net/2008/03/10/wordpress-memcached/">如何让 WordPress 启用 Memcached 缓存</a>。<br />
所以你的服务器要求要和安装 Memcached 的要求一致。</li>
<li>上传 <code>advanced-cache.php</code> 到 <code>/wp-content/</code> 目录。</li>
<li>在 <code>wp-config.php</code> 添加以下代码激活 Batcache:<br />
<code>define('WP_CACHE', true);</code></li>
<li>然后尝试多次载入页面查看源代码，应该在 </head> 之前可以看到一些 Batcache 状态代码。</li>
<li>可以修改 <code>advanced-cache.php</code> 开始的一些代码来调整选项。</li>
<li>可选的上传 <code>batcache.php</code> 到你的 <code>/wp-content/plugins/</code> 目录。</li>
</ol>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/07/22/batcache/&title=WordPress+%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98%E7%BB%88%E6%9E%81%E5%8A%A0%E9%80%9F%E6%8F%92%E4%BB%B6%EF%BC%9ABatcache&tags=Memcached, WordPress 插件, 缓存, "  title="WordPress 内存缓存终极加速插件：Batcache">收藏本文</a>
 / <a href="http://fairyfish.net/2008/07/22/batcache/#comments" title="WordPress 内存缓存终极加速插件：Batcache">16条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">WP Super Cache 技巧：实时更新首页</a></li>
<li><a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">最佳 WordPress 缓存插件：WP Super Cache</a></li>
<li><a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">WordPress 缓存插件介绍</a></li>
<li><a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/" title="使用 PostMeta 提速 WordPress 插件">使用 PostMeta 提速 WordPress 插件</a></li>
<li><a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">使用 WordPress 对象缓存</a></li>
<li><a href="http://fairyfish.net/m/wp-emoji/" title="在你的博客里显示 Emoji 表情：WP-Emoji">在你的博客里显示 Emoji 表情：WP-Emoji</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=1157116222&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F07%2F22%2Fbatcache%2F&amp;utmdt=WordPress+%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98%E7%BB%88%E6%9E%81%E5%8A%A0%E9%80%9F%E6%8F%92%E4%BB%B6%EF%BC%9ABatcache&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/07/22/batcache/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>怎样缓存 Sidebar</title>
		<link>http://fairyfish.net/2008/06/23/cache-sidebar/</link>
		<comments>http://fairyfish.net/2008/06/23/cache-sidebar/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 19:44:39 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1417</guid>
		<description><![CDATA[今天尝试使用 PHP 的 Output Control Functions 进行缓存，发现代码还是蛮简单的，于是把其中对 Sidebar 缓存的代码分享下，几点说明： 1. 可以自己修改缓存时间，怎么修改，看下面代码的唯一的注释。 2. 一旦采用这样的缓存，在缓存时间内对 sidebar 做任何修改都不会生效。 3. 如果你又想缓存又想修改东西，你可以把缓存时间修改为1秒，作了修改之后，让 sidebar 缓存生成之后，再把缓存时间修改为原来的。 4. 如果你的 sidebar 为不同页面不同 sidebar，那么你要根据自己的 sidebar 生成不同 sidebar 缓存，如：sidebar_home, sidebar_single，基本代码类似。 5. 会对 Recent Post, Recent Comment 这些插件产生延迟，在缓存的时间内，如果这些列表更新了回不能及时体现。 下面是具体的步骤和代码： 1. 进入 WordPress 后台，点击 Design => Theme Editor => Sidebar (sidebar.php)。 2. 在 sidebar.php 开头加入以下代码： &#60;?php $sidebar_html = [...]]]></description>
			<content:encoded><![CDATA[<p>今天尝试使用 PHP 的 <a href="http://cn.php.net/manual/en/ref.outcontrol.php">Output Control Functions</a> 进行缓存，发现代码还是蛮简单的，于是把其中对 Sidebar 缓存的代码分享下，几点说明：</p>
<p>1. 可以自己修改缓存时间，怎么修改，看下面代码的唯一的注释。<br />
2. 一旦采用这样的缓存，在缓存时间内对 sidebar 做任何修改都不会生效。<br />
3. 如果你又想缓存又想修改东西，你可以把缓存时间修改为1秒，作了修改之后，让 sidebar 缓存生成之后，再把缓存时间修改为原来的。<br />
4. 如果你的 sidebar 为不同页面不同 sidebar，那么你要根据自己的 sidebar 生成不同 sidebar 缓存，如：sidebar_home, sidebar_single，基本代码类似。<br />
5. 会对 Recent Post, Recent Comment 这些插件产生延迟，在缓存的时间内，如果这些列表更新了回不能及时体现。<br />
<span id="more-1417"></span><br />
下面是具体的步骤和代码：</p>
<p>1. 进入 WordPress 后台，点击 Design => Theme Editor => Sidebar (sidebar.php)。</p>
<p>2. 在 sidebar.php 开头加入以下代码：</p>
<pre>
<span style="color: Blue;">&lt;?php</span><span style="color: Gray;">
</span><span style="color: #00008b;">$sidebar_html</span><span style="color: Gray;"> = </span><span style="color: Blue;">ABSPATH</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">wp-content/cache/sidebar.txt</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;
</span><span style="color: #00008b;">$have_cached</span><span style="color: Gray;"> = </span><span style="color: Green;">false</span><span style="color: Gray;">;
</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">file_exists</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_html</span><span style="color: Olive;">)){</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$file_time</span><span style="color: Gray;"> = </span><span style="color: Blue;">filemtime</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_html</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">((</span><span style="color: #00008b;">$file_time</span><span style="color: Gray;"> + </span><span style="color: Maroon;">3600</span><span style="color: Olive;">)</span><span style="color: Gray;"> &gt; </span><span style="color: Blue;">time</span><span style="color: Olive;">()){</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//缓存1小时</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;!-- cached sidebar --&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Olive;">(</span><span style="color: Blue;">file_get_contents</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_html</span><span style="color: Olive;">))</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;!-- end of cached sidebar --&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$have_cached</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">
</span><span style="color: Olive;">}</span><span style="color: Gray;">
</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: #00008b;">$have_cached</span><span style="color: Olive;">){</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ob_start</span><span style="color: Olive;">()</span><span style="color: Gray;">;
</span><span style="color: Blue;">?&gt;</span>
</pre>
<p>3. 在 sidebar.php 结尾加入以下代码：</p>
<pre>
<span style="color: Blue;">&lt;?php</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$sidebar_content</span><span style="color: Gray;"> = </span><span style="color: Blue;">ob_get_contents</span><span style="color: Olive;">()</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ob_end_clean</span><span style="color: Olive;">()</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$sidebar_fp</span><span style="color: Gray;"> = </span><span style="color: Blue;">fopen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_html</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">w</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_fp</span><span style="color: Olive;">){</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_fp</span><span style="color: Gray;">, </span><span style="color: #00008b;">$sidebar_content</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">fclose</span><span style="color: Olive;">(</span><span style="color: #00008b;">$sidebar_fp</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$sidebar_content</span><span style="color: Gray;">;
}
</span><span style="color: Blue;">?&gt;</span>
</pre>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/06/23/cache-sidebar/" title="怎样缓存 Sidebar">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/06/23/cache-sidebar/&title=%E6%80%8E%E6%A0%B7%E7%BC%93%E5%AD%98+Sidebar&tags=缓存, "  title="怎样缓存 Sidebar">收藏本文</a>
 / <a href="http://fairyfish.net/2008/06/23/cache-sidebar/#comments" title="怎样缓存 Sidebar">7条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/article/wordpress-seo/" title="WordPress SEO 宝典">WordPress SEO 宝典</a></li>
<li><a href="http://fairyfish.net/article/install-wordpress-on-mac-os-x/" title="在 Mac OS X 系统上安装 WordPress 本地测试">在 Mac OS X 系统上安装 WordPress 本地测试</a></li>
<li><a href="http://fairyfish.net/2010/12/23/wpjam-vshop/" title="基于 WordPress 虚拟商品销售的商城系统">基于 WordPress 虚拟商品销售的商城系统</a></li>
<li><a href="http://fairyfish.net/2010/11/15/wordpress-31-feature/" title="WordPress 3.1 开发的功能">WordPress 3.1 开发的功能</a></li>
<li><a href="http://fairyfish.net/2010/09/28/windows-live-spaces-2-wordpress-com/" title="Windows Live Spaces 关闭，博客转移到 WordPress.Com">Windows Live Spaces 关闭，博客转移到 WordPress.Com</a></li>
<li><a href="http://fairyfish.net/article/dreamweaver-cs5-code-hinting-for-wordpress/" title="Dreamweaver CS5 中启用 WordPress 代码提示功能">Dreamweaver CS5 中启用 WordPress 代码提示功能</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=874334591&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F06%2F23%2Fcache-sidebar%2F&amp;utmdt=%E6%80%8E%E6%A0%B7%E7%BC%93%E5%AD%98+Sidebar&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/06/23/cache-sidebar/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>使用 PostMeta 提速 WordPress 插件</title>
		<link>http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/</link>
		<comments>http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 12:47:57 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1402</guid>
		<description><![CDATA[WordPress Related Posts 这个插件已经被下载了2万多次。但是个人对这个插件一直有一个不满意的地方，那就是效率不是很高。我在我的 Bluehost 空间安装这个插件的时候，几次因为这个插件 SLOW SQL 搞的 CPU 超限而被 Suspend 了几分钟，狂晕。 是的，这个插件是使用了一条效率很低的 SQL，因为根据 Tag 来查找相关日至要对所有的 Post 扫一便，看看是不是有相同的 Tag。我想了很久，还是没有想到效率更高的缓存，大学的时候 SQL 还是学得不错，但是现在基本都不懂了，汗！既然没有想到效率更高的 SQL，我想到的第二个方法是缓存，第一个方法是可以使用 WordPress 对象缓存，但是 WordPress 2.5 已经全部采用内存缓存而舍弃了文件缓存，如果主机没有安装内存缓存模块，基本没用，当然也可以是用高级缓存插件，如：WordPress Super Cache。不过我这里使用的是 PostMeta 来缓存。 我们知道，PostMeta 表是用来存储 Post 其他自定义字段，比如你可以在 WordPress 编辑界面自定义字段那里使用它。那么我可以把当前日志的相关日志列表写到 PostMeta 中去，并记录写入的时间。然后再取出，就可以达到加速的效果。具体代码如如下： &#60;?php &#160; global $id; &#160; &#160; $output_old = get_post_meta($id, &#34;related_posts&#34;, $single = true); // 从 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://fairyfish.net/2007/09/12/wordpress-23-related-posts-plugin/">WordPress Related Posts</a> 这个插件已经被下载了<a href="http://wordpress.org/extend/plugins/wordpress-23-related-posts-plugin/stats/">2万多次</a>。但是个人对这个插件一直有一个不满意的地方，那就是效率不是很高。我在我的 <a href="http://www.bluehost.com/track/deneb/CODE23">Bluehost</a> 空间安装这个插件的时候，几次因为这个插件 SLOW SQL 搞的 CPU 超限而被 Suspend 了几分钟，狂晕。<br />
<span id="more-1402"></span><br />
是的，这个插件是使用了一条效率很低的 SQL，因为根据 Tag 来查找相关日至要对所有的 Post 扫一便，看看是不是有相同的 Tag。我想了很久，还是没有想到效率更高的缓存，大学的时候 SQL 还是学得不错，但是现在基本都不懂了，汗！既然没有想到效率更高的 SQL，我想到的第二个方法是缓存，第一个方法是可以使用 <a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/">WordPress 对象缓存</a>，但是 WordPress 2.5 已经全部采用内存缓存而舍弃了文件缓存，如果主机没有安装内存缓存模块，基本没用，当然也可以是用高级缓存插件，如：WordPress Super Cache。不过我这里使用的是 PostMeta 来缓存。</p>
<p>我们知道，PostMeta 表是用来存储 Post 其他自定义字段，比如你可以在 WordPress 编辑界面自定义字段那里使用它。那么我可以把当前日志的相关日志列表写到 PostMeta 中去，并记录写入的时间。然后再取出，就可以达到加速的效果。具体代码如如下：</p>
<pre>
<span style="color: Gray;">&lt;?</span><span style="color: Blue;">php</span><span style="color: Gray;">
&nbsp; </span><span style="color: Blue;">global</span><span style="color: Gray;"> $</span><span style="color: Blue;">id</span><span style="color: Gray;">;
&nbsp;
&nbsp; $</span><span style="color: Blue;">output_old</span><span style="color: Gray;"> = </span><span style="color: Blue;">get_post_meta</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">id</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">related_posts</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, $</span><span style="color: Blue;">single</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 从 postmeta 表中获取缓存的相关日志</span><span style="color: Gray;">
&nbsp;
&nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">output_old</span><span style="color: Olive;">){</span><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">//如果返回结果不为空</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;$</span><span style="color: Blue;">time</span><span style="color: Gray;"> = </span><span style="color: Blue;">time</span><span style="color: Olive;">()</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: Gray;">$</span><span style="color: Blue;">time</span><span style="color: Gray;"> - $</span><span style="color: Blue;">output_old</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">time</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">])</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">600</span><span style="color: Olive;">){</span><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">//并且在缓存的时间以内（600秒）</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">echo</span><span style="color: Gray;"> $</span><span style="color: Blue;">output_old</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">related_posts</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">]</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">
&nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;$</span><span style="color: Blue;">output</span><span style="color: Gray;"> = </span><span style="color: Blue;">wp_get_related_posts</span><span style="color: Olive;">()</span><span style="color: Gray;"> ; </span><span style="color: #ffa500;">//获取相关日志</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;$</span><span style="color: Blue;">output_new</span><span style="color: Gray;"> = </span><span style="color: Blue;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">time</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;</span><span style="color: Blue;">time</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">related_posts</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">=&gt;$</span><span style="color: Blue;">output</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">output_old</span><span style="color: Olive;">){</span><span style="color: #ffa500;">//如果 postmeta 中已有记录，更新</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">update_post_meta</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">id</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">related_posts</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, $</span><span style="color: Blue;">output_new</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//否则，新插入</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">add_post_meta</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">id</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">related_posts</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, $</span><span style="color: Blue;">output_new</span><span style="color: Gray;">, </span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">echo</span><span style="color: Gray;"> $</span><span style="color: Blue;">output</span><span style="color: Gray;">;
&nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">
?&gt;</span>
</pre>
<p>当然了，这样缓存也有点不好，就是相关后台配置修改要一段时间才能体现出来。下载：<a href="http://wordpress.org/extend/plugins/wordpress-23-related-posts-plugin/">WordPress Related Posts 0.8 </a></p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/" title="使用 PostMeta 提速 WordPress 插件">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/&title=%E4%BD%BF%E7%94%A8+PostMeta+%E6%8F%90%E9%80%9F+WordPress+%E6%8F%92%E4%BB%B6&tags=WordPress 插件, 缓存, "  title="使用 PostMeta 提速 WordPress 插件">收藏本文</a>
 / <a href="http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/#comments" title="使用 PostMeta 提速 WordPress 插件">26条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">WP Super Cache 技巧：实时更新首页</a></li>
<li><a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">最佳 WordPress 缓存插件：WP Super Cache</a></li>
<li><a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">WordPress 内存缓存终极加速插件：Batcache</a></li>
<li><a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">WordPress 缓存插件介绍</a></li>
<li><a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">使用 WordPress 对象缓存</a></li>
<li><a href="http://fairyfish.net/m/wp-emoji/" title="在你的博客里显示 Emoji 表情：WP-Emoji">在你的博客里显示 Emoji 表情：WP-Emoji</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=954985286&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F06%2F05%2Fspeed-up-wordpress-plugin-by-using-postmeta%2F&amp;utmdt=%E4%BD%BF%E7%94%A8+PostMeta+%E6%8F%90%E9%80%9F+WordPress+%E6%8F%92%E4%BB%B6&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/06/05/speed-up-wordpress-plugin-by-using-postmeta/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>使用 WordPress 对象缓存</title>
		<link>http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/</link>
		<comments>http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/#comments</comments>
		<pubDate>Sat, 03 May 2008 14:00:55 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Digg]]></category>
		<category><![CDATA[WordPress 插件]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/</guid>
		<description><![CDATA[其实我用的插件都算是蛮多了，达到了15个（当然也有些疯子，装了30多个插件，然后怪 WordPress 太慢。）。但是最近经过我的优化之外，其实博客的速度也不算太慢了，这里其中我就用到就是 WordPress 缓存机制，以前我经常用的是 WP-Cron 的定时更新的功能进行缓存。今天给大家介绍另外一种缓存机制：WordPress Object Cache。以下信息节选翻译自：Using the WordPress Object Cache WordPress Object Cache 的目的是提供一个耗时查询或者运算结果存储到一个缓存文件的方法。这样就可以让我们不用老是重复到数据库中或者其他外部网站获取不变的数据。但是需要提出的是，一些服务器环境在使用缓存的时候会有些问题，所以这需要你去监控你的服务器来决定使用缓存能否对你的站点有益。 使用 WordPress 对象缓存技术其实是非常简单的，使用 wp_cache_set() 把数据写到缓存中，然后通过 wp_cache_get() 到缓存中读取数据。 在开始之前，有些东西你需要去检测一下，因为在默认情况下对象缓存是没有启用的。启动它，你需要编辑 wp-config.php 文件，在 WP_LANG 后面添加如下几行： // Enable the WordPress Object Cache: define(ENABLE_CACHE, true); 还有你需要检查下没有定义 DISABLE_CACHE 这个变量，另外你还需要检查下你的主机中有 wp-content/cache 这个子目录，并且是可写的。 首先，我先解释下如何把数据放到缓存中。把缓存都想象成一系列的容器，每个装着一些数据包。你可以给这些容器和在容器里面的包命名，这样你等下就知道如何去获取它们了。在我的例子中，我将把握的容器命名为 mycache，把数据包命名为 mysettings。 这里是如何把数据写入缓存的例子： // Whenever we need to rewrite the cache data: [...]]]></description>
			<content:encoded><![CDATA[<p>其实<a href="http://fairyfish.net/2008/01/18/wordpress-plugins-used-in-fairyfish/">我用的插件</a>都算是蛮多了，达到了15个（当然也有些疯子，装了30多个插件，然后怪 WordPress 太慢。）。但是最近经过我的优化之外，其实博客的速度也不算太慢了，这里其中我就用到就是 WordPress 缓存机制，以前我经常用的是 <a href="http://fairyfish.net/2007/11/26/write-plugin-by-yourself-cron/">WP-Cron</a> 的定时更新的功能进行缓存。今天给大家介绍另外一种缓存机制：<a href="http://codex.wordpress.org/Function_Reference/WP_Cache">WordPress Object Cache</a>。以下信息节选翻译自：<a href="http://dougal.gunters.org/blog/2006/07/21/using-the-wordpress-object-cache">Using the WordPress Object Cache</a></p>
<p>WordPress Object Cache 的目的是提供一个耗时查询或者运算结果存储到一个缓存文件的方法。这样就可以让我们不用老是重复到数据库中或者其他外部网站获取不变的数据。但是需要提出的是，一些服务器环境在使用缓存的时候会有些问题，所以这需要你去监控你的服务器来决定使用缓存能否对你的站点有益。<br />
<span id="more-1222"></span><br />
使用 WordPress 对象缓存技术其实是非常简单的，使用 <code>wp_cache_set()</code> 把数据写到缓存中，然后通过 <code>wp_cache_get()</code> 到缓存中读取数据。</p>
<p>在开始之前，有些东西你需要去检测一下，因为在默认情况下对象缓存是没有启用的。启动它，你需要编辑 <code>wp-config.php</code> 文件，在 WP_LANG 后面添加如下几行：</p>
<pre><span style="color: #008000">// Enable the WordPress Object Cache:</span>
<a style="color: #ffa500" href="http://www.php.net/define">define</a>(ENABLE_CACHE, <a style="color: #0000ff" href="http://www.php.net/true">true</a>);</pre>
<p>还有你需要检查下没有定义 <code>DISABLE_CACHE</code> 这个变量，另外你还需要检查下你的主机中有 <code>wp-content/cache</code> 这个子目录，并且是可写的。</p>
<p>首先，我先解释下如何把数据放到缓存中。把缓存都想象成一系列的容器，每个装着一些数据包。你可以给这些容器和在容器里面的包命名，这样你等下就知道如何去获取它们了。在我的例子中，我将把握的容器命名为 <code>mycache</code>，把数据包命名为 <code>mysettings</code>。</p>
<p>这里是如何把数据写入缓存的例子：</p>
<pre><span style="color: #008000">// Whenever we need to rewrite the cache data:</span>
<span style="color: #008000">// This could be calling a database, webservice, etc.</span>
$mydata = my_complicated_data_query();
$myexpire = 60 * 60 * 24; <span style="color: #008000">// Cache data for one day (86400 seconds)</span>
wp_cache_set('<span style="color: #8b0000">mysettings</span>', $mydata, '<span style="color: #8b0000">mycache</span>', $myexpire);</pre>
<p>现在当你要避免复杂的数据库查询，首先检查下是否已经有了缓存，如果你要的信息没有再缓存中，或者已经过期了。<code>wp_cache_get()</code> 会返回否，如果这样，你就要去数据库中重新获取这些信息。否则就返回再缓存中的信息。</p>
<pre><span style="color: #008000">// First of all, before you try to access the user data, check</span>
<span style="color: #008000">// the cache.</span>
$mydata = wp_cache_get('<span style="color: #8b0000">mysettings</span>', '<span style="color: #8b0000">mycache</span>');

<a style="color: #0000ff" href="http://www.php.net/if">if</a> (<a style="color: #0000ff" href="http://www.php.net/false">false</a> === $mydata) {
	<span style="color: #008000">// The cache data doesn't exist or it's expired.</span><span style="color: #008000"> Do whatever we need to populate $mydata from the </span><span style="color: #008000">database normally... </span>

	$mydata = my_complicated_data_query();

	<span style="color: #008000">// Since we know that the cache isn't up to date, we should </span><span style="color: #008000">write this fresh information to it now, so that we can avoid</span><span style="color: #008000"> the query next time.</span>
	$myexpire = 60 * 60 * 24; <span style="color: #008000">// Cache data for one day (86400 seconds)</span>
	wp_cache_set('<span style="color: #8b0000">mysettings</span>', $mydata, '<span style="color: #8b0000">mycache</span>', $myexpire);
}</pre>
<p>当然了，数据缓存多长时间和使用哪个 API action hooks 去触发更新缓存，这都取决于你。</p>
<p>我根据 WordPress 这个缓存机制作了一个鲜果 Digg Top 10 得东东。可以到<a href="http://fairyfish.net/top-10/">这里看看</a>。当然这个东东是很脆弱的，只要鲜果修改了一些东东，就不能用了。个人作觉得这个东西应该是鲜果自己来做成 Widget 最好了。anyway，我还是放出来吧！如果你有兴趣就去下载吧，就当作学习这个 WordPress 对象缓存机制！使用方法，使用一下页面模板函数<code> xianguo_digg_top_10()</code>，后台有个设置，选取最近多少天的文章来显示到这个列表来，不要把文章选取太多了，不然会出现错误。</p>
<p>Update 2008-01-25 鲜果再次修改接口，这个功能已经不行了！下载也失效了！</p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/" title="使用 WordPress 对象缓存">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/&title=%E4%BD%BF%E7%94%A8+WordPress+%E5%AF%B9%E8%B1%A1%E7%BC%93%E5%AD%98&tags=Digg, WordPress 插件, 缓存, "  title="使用 WordPress 对象缓存">收藏本文</a>
 / <a href="http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/#comments" title="使用 WordPress 对象缓存">23条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2009/12/05/wp-super-cache-refresh-front-page/" title="WP Super Cache 技巧：实时更新首页">WP Super Cache 技巧：实时更新首页</a></li>
<li><a href="http://fairyfish.net/2009/05/03/wordpress-comment-digg/" title="WordPress 插件推荐：WordPress Comment Digg">WordPress 插件推荐：WordPress Comment Digg</a></li>
<li><a href="http://fairyfish.net/2009/03/09/wp-easy-digg/" title="WordPress 插件推荐：WP Easy Digg">WordPress 插件推荐：WP Easy Digg</a></li>
<li><a href="http://fairyfish.net/2008/10/27/wp-super-cache/" title="最佳 WordPress 缓存插件：WP Super Cache">最佳 WordPress 缓存插件：WP Super Cache</a></li>
<li><a href="http://fairyfish.net/2008/07/22/batcache/" title="WordPress 内存缓存终极加速插件：Batcache">WordPress 内存缓存终极加速插件：Batcache</a></li>
<li><a href="http://fairyfish.net/2008/06/10/wordpress-cache-plugins/" title="WordPress 缓存插件介绍">WordPress 缓存插件介绍</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=447161615&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F01%2F23%2Fusing-the-wordpress-object-cache%2F&amp;utmdt=%E4%BD%BF%E7%94%A8+WordPress+%E5%AF%B9%E8%B1%A1%E7%BC%93%E5%AD%98&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/01/23/using-the-wordpress-object-cache/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>

