留着用 安装WP Super Cache常见问题
我如何知道博客已被缓存?
查看你的站点的任意页面的源代码。当某个页面是初次创建,你会在源代码末尾看到这样的文本:“Dynamic page generated in XXXX seconds.” 和“Cached page generated by WP-Super-Cache on YYYY-MM-DD HH:MM:SS”。在刷新时,缓存页面会显示相同的时间戳,所以在检查时请稍等几秒。
如果你启用了压缩功能, 文本“Compression = gzip ”也会添加。 如果禁用了压缩,并且这个页面以静态html方式显示,文本“super cache”会添加在其中。
另一种检查你的缓存页面由PHP脚本处理或是由静态缓存而来的方法是查看HTTP header。
WP-Cache (PHP) 缓存页面会有这样的Header“WP-Super-Cache:WP-Cache”。 你可以使用名为Live HTTP Headers的FireFox扩展来检验header。 同时,你还应该查看位于wp-content/cache/supercache/主机名/ 目录下的静态缓存文件。
为什么WP-Super-Cache比WP-Cache好?
这个插件基于非常棒的WP-Cache插件而来,因此具有那个插件所有的优点。 除此之外,它还创建使每次访问Blog都采用单一格式的每个页面的副本,这样可以使服务器更快响应请求。 它几乎和你在浏览器中保存一个页面并把它上传上去替换你的主页一样快。
评论和其他博客上的动态部分会立即更新吗?
评论会在它们通过审核后立刻显示,这取决于博客主人的评论策略。其他页面上的动态元素可能不会更新,除非它们由Javasript,Flash,Java或其他客户端浏览器语言构成。这个插件会真正创建静态html页面,在这些文件被调用时,没有PHP代码执行。 “Popularity Contest”就是一个在缓存环境下不会工作的插件。那些为移动设备用户显示不同内容的插件也有可能不会正常工作。
Super Cache的压缩会拖慢我的服务器吗?
不会,相反它还会加快你的服务器速度。
Super Cache文件被压缩和储存时,大负载的压缩动作只会出现一次。这些文件一般都非常小,发送到访客浏览器上也会比未经压缩的快很多。其结果是,你的服务器会花费更少的时间在传输上,于是也就会节省CPU时间和带块,并使响应下次请求更快速。
为什么 WP UserOnline,Popularity Contest, WP Postratings 或某个插件在我的博客上不再工作或更新状态了?
WP-Super-Cache插件缓存整个页面,所以有些每次页面调用都需要运行PHP代码的插件就不会正常工作了。
想避免这个问题,这个插件必须使用Javascript或AJAX来更新。 如果这个插件要在页面上显示信息,那么也必须有Javascript请求。
为什么这个插件不默认缓存搜索引擎机器人的请求?
这些机器人一般只访问每个页面一次,如果这个页面并不热门,完全没有必要创建缓存文件并让它在你的服务器上闲置。
为什么不创建我站点上所有页面的缓存文件呢?
同刚才那个问题一样,没有必要缓存没人访问的页面。大量的缓存文件会减慢垃圾收集系统的速度,因为它会尝试检查每个文件。同时它还可能给主机商带来问题。 当你的服务器遇到磁盘错误问题时可能需要更长的时间来检查文件。还记得用scandisk或者fsck检查大驱动器时用的时间吗?
1、一个分类页面取代了我的首页…
很小比例使用下列设置的网站会有这样的问题:
使用静态页面作为首页。
使用 /%category%/%postname%/ 永久链接结构
有时一个分类页面会作为站点首页缓存而取代原有静态页面。作者无法重现这个问题,但是有个简单的办法可以解决问题,即将插件设置为半开模式。 对一般的访问量来说,你不会发现你站点的速度有什么不同。
问题处理:
如果你安装插件后发现有什么不正常的现象,可以从这些方面进行检查:
2、服务器是否可写 wp-content 目录?
wp- content目录中是否有wp-cache-config.php 文件?
如果没有,复制 wp-super-cache/wp-cache-config-sample.php文件到 wp-content/wp-cache-config.php,并确认 WPCACHEHOME 指向正确的地方。
wp-content 目录下是否有advanced-cache.php文件?
如果没有,你需要复制 wp-super-cache/advanced-cache.php到 wp-content/ 目录下,编辑这个文件,修改路径使它指向 wp-super-cache 文件夹。
如果页面都没有被缓存,移除 wp-content/advanced-cache.php文件并根据上述要求重新创建它。
确认wp-config.php文件中的这一行内容在 “require_once(ABSPATH.’wp-settings.php’);”之前:
define( ‘WP_CACHE’, true );
试试再次打开 设置 –> WP Super Cache页面斌启用缓存。
看看 wp-content/cache/supercache/目录。有文件夹和文件在里面吗?
3、php error_log 错误记录里有什么信息?
如果当super cache安装后你的浏览器一直要求你保存文件而不是显示页面,你必须禁用Super Cache 压缩。访问 设置-> WP Super Cache页面禁用它。
这个插件在PHP安全模式启用时无法很好地工作。 必须由你的服务器管理员禁用这个功能。
如果页面有时可以被超级缓存而有时没有,其原因可能是你的博客部分访客由 “www”前缀访问而有些不是。如果你在使用老版本的Wordpress,你应该选择安装 Enforce www preference 插件。 最新版本的Wordpress可以重定向它们(你应该一直使用最新版本的Wordpress!)。
在Dreamhost上的个人服务器用户如果遇到有关CPU占用增加的错误,则应该编辑 wp-content/wp-cache-config.php文件并设置缓存目录到“/tmp/”目录。
类似“failed to acquire key 0x152b: Permission denied in…”或“Page not cached by WP Super Cache. Could not get mutex lock.” 这样的文件锁定错误表明你可能必须使用文件锁定功能。编辑 wp-content/wp-cache-config.php 并取消注释“$useflock = ture” 或设置 $semid 为一个不同的值。你还可以把从管理页面禁用文件锁定作为最后一招使用。
4、确认服务器可写 cache/wpcachemutex.lock 文件
缓存文件不能放置在NFS或Samba或NAS共享上。 必须将其放置在服务器本地磁盘上。只有在缓存文件夹在本地机器上时,文件锁定和删除过期文件功能才能正常工作。
如果Wordpress无法找到 wp-cron.php文件,旧缓存文件的垃圾收集特性就无法工作。如果你的主机名定为127.0.0.1,可能会阻止垃圾收集特性正常运作。检查你的 access_log,寻找有关wp-cron.php的条目。它们是否返回 404(文件没找到)或200 代码?如果返回404或你在哪儿都没有看到wp-cron.php文件,Wordpress可能在错误的地方寻找这个脚本了。你应该联系你的服务器管理员来修正这个问题,或者在Unix服务器上编辑 /etc/hosts 并移除下面的内容。你的主机名必须设置为外币IP地址。查看http://yoast.com/wp-cron-issues/ 获得更多信息。
127.0.0.1 myhostname.com一行类似“127.0.0.1 localhost localhost.localdomain” 的内容是可以的。
如果旧页面通过Supercache展示给你的访客,你可能缺少某些Apache模块(如果你没用Apache的话,那就可能是类似功能的东西)。
3个模块是必需的: modmime, modheaders 和mod_expires。后两个对于确保浏览器能够调用你站点上已存在页面的新版本是非常重要的。
“WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!”
这个错误信息如果出现在每个页面的末尾的话,用你常用的编辑器打开 wp-content/advanced-cache.php文件,看看指向wp-cache-phase1.php的路径是否正确?如果不正确的话缓存引擎就不会调用。
如何卸载WP Super Cache?
编辑你的插件目录中的 wp-super-cache/uninstall.php文件,将 UNINSTALL_WPSUPERCACHE设置为一个非空值。
define( ‘UNINSTALL_WPSUPERCACHE’, ‘1’ );打开你的浏览器并直接调用 wp-content/plugins/wp-super-cache/uninstall.php文件。 你必须登录并确认这个动作。如果你没有立即删除这个插件,在这个脚本运行之后,请注释掉上面这行 define() 以免其他人运行它。
如何手动卸载:
从wp-config.php文件中移除WP_CACHE定义,内容应该类似这样 define(‘WP_CACHE’, true );
从后台页面清理缓存并从插件页禁用插件
从你的.htaccess文件中移除Super Cache mod_rewrite 规则
移除wp-content/advanced-cache.php和wp-cache-config.php文件
删除 wp-content/cache目录
从你的插件目录中删除wp-super-cache
如果所有办法都失败并且你的网站已不能打开
- 从wp-config.php中移除WP_CACHE定义: define( ‘WP_CACHE’, true );
- 移除插件写入.htaccess文件中的规则(请看上面)。
- 删除插件文件夹中的wp-super-cache目录
- 另外,可选删除 advanced-cache.php, wp-cache-config.php 和在wp-content/目录中的缓存文件夹。
自定义缓存
现在可实现通过 add_cacheaction() 函数hook进缓存进程。
可用三个hook:
- ‘wpcachegetcookiesvalues’ – 修改原WP Cache使用的键。
- ‘add_cacheaction’ – 在phase2运行。 允许一个插件添加WordPress hooks。
- ‘cacheadminpage’ – 在管理页面运行。使用它来修改页面,可能通过添加新的设置选项来实现。
这里还有一个常用WordPress Filter。 使用 “docreatesupercache” filter 来自定义缓存前的检查。 这个filter接受一个参数。 输出WP-Cache的wpcachegetcookies_values() 函数。