WP Super Cache
该插件可以从您的动态WordPress博客中生成静态html文件。 生成html文件后,您的WEB服务器将直接使用html文件来提供服务,而无需处理相对较臃肿和昂贵的WordPress PHP脚本。
静态html文件将提供给绝大多数用户:
- 未登录的用户。
- 没有在您的博客上留下评论的用户。
- 或者没有查看过密码保护文章的用户。
99% 的访问者将会被提供静态 HTML 文件。一个缓存文件可以被服务数千次。其他访问者将会被提供定制的缓存文件,以适应他们的访问。如果他们已登录或留下评论,这些详细信息将会被显示和缓存给他们。
该插件以3种方式提供缓存文件(按速度排序)。
- 专家。最快的方法是使用Apache mod_rewrite(或您的web服务器支持的任何类似模块)来提供 “超级缓存 “静态html文件。这些方法完全绕过了PHP,且速度飞快。如果您的服务器受到大量的流量冲击,也可以很容易的应对,因为请求是 “轻量级 “的。需要Apache mod_rewrite模块(如果您设置有自定义的固定链接,则该模块可能已经安装)并预先修改了您的.htaccess文件,这些修改势必会存在一些风险,如果修改不正确,则可能会使您的站点瘫痪。
- 简单。超级缓存的静态文件可以由PHP提供,这是使用插件的推荐方式。如果存在”超级缓存”文件,插件将提供该文件,它的速度几乎与mod_rewrite方法一样快。这种方式更容易配置,因为不需要更改.htaccess文件。您仍然需要自定义永久链接。在此缓存模式下,您可以保持页面的某些部分是动态的。
- WP-Cache 缓存。主要用于缓存已知用户的页面、带参数的 URL 和订阅源。已知用户是已登录的用户、留下评论的访客或应显示自定义每个用户数据的用户。这是最灵活的缓存方法,但速度稍慢。如果禁用了超级缓存,WP-Cache 缓存也会缓存未知用户的访问。在此模式下,您的页面也可以有动态部分。此模式始终启用,但您可以单独禁用已知用户、带参数的 URL 或订阅源的缓存。如果您只想使用 WP-Cache 缓存,请在 wp-config.php 中将常量 “DISABLE_SUPERCACHE” 设置为 1。
如果您不熟悉编辑 PHP 文件,那么请使用简易模式。它易于设置且非常快速。
推荐设置
- 简单的缓存。
- 压缩页面。
- 不缓存已知用户的页面。
- 缓存重建。
- CDN支持。
- 额外的主页检查。
垃圾收集是清理过期和陈旧的缓存文件的行为。过期时间没有正确的值,但一个好的起点是1800秒。
请考虑删除“被拒绝的用户代理”文本框中的内容,并允许搜索引擎为您缓存文件。
尽可能多地预载帖子,并启用 “预载模式”。旧缓存文件的垃圾回收将被禁用。如果你不关心侧边栏小部件是否经常更新,可将预载时间间隔设置为 2880 分钟(2 天),这样你的所有文章就不会经常被重新缓存。预载发生时,被刷新帖子的缓存文件会被删除,然后重新生成。之后会对所有旧文件进行垃圾回收,以清除过时的缓存文件。 即使启用了预加载模式,在修改帖子或发表评论时,缓存文件仍会被删除。
开发
文档
预加载
以下术语的翻译如下: “your” 被翻译为 “您的”。
您可以通过预加载为您的网站的帖子、分类和标签生成缓存文件。预加载将访问您的网站的每个页面,并在访问过程中生成缓存页面,就像其他访问者一样。由于此功能的顺序性质,如果有很多帖子,预加载整个网站可能需要一些时间。
为了使预加载更加有效,可以禁用垃圾回收,以防止删除较旧的缓存文件。这可以通过在设置中启用”预加载模式”来完成。然而,请注意,页面最终会过时,但通过提交评论或编辑帖子进行更新将清除部分缓存。
垃圾收集
您的缓存目录会随着时间的推移而填满,占用服务器空间。如果空间有限或按容量计费,或者您担心网站的缓存页面会变得陈旧,那么就需要进行垃圾回收。垃圾回收定期进行,会删除缓存目录中的旧文件。在高级设置页面上,您可以指定以下内容: 1. 缓存超时时间。缓存文件被视为新鲜的时间长度。超过此时间后,它们将变为陈旧并可被删除。 2. 调度程序。设置垃圾回收应该多久进行一次。 3. 通知电子邮件。您可以在垃圾回收作业进度上得到通知。
垃圾回收的设置没有对错之分。它取决于您自己的网站。 如果您的网站经常更新或有评论,则将超时时间设置为1800秒,并将定时器设置为600秒。 如果您的网站大部分是静态的,您可以通过将超时时间设置为0来禁用垃圾回收,或者使用一个非常大的超时值。
缓存目录,通常是wp-content/cache/只用于存放临时文件。切勿将重要的文件或重要文件或目录的符号链接放在该目录中。如果插件对该目录有写访问权限,则该目录中的所有内容都会被删除。
CDN(内容分发网络)
内容分发网络(CDN)通常是由分布在世界各地的计算机组成的网络,通过使用离您较近的服务器,可以更快地为您的网站提供内容。图像、Javascript 和 CSS 文件等静态文件可以通过这些网络提供,以加快网站加载速度。您还可以使用您域名的子域来提供静态文件,从而创建一个 “穷人的 CDN”。
OSSDL CDN off-linker已集成到WP Super Cache中,以提供基本的CDN支持。它通过重写服务器上WP内容和WP includes中文件(不包括.php文件)的URL来工作,以便它们指向不同的主机名。许多CDN支持origin pull。这意味着CDN将在第一次请求文件时自动从您的服务器下载该文件,并将在可配置的时间内继续提供该文件,然后再从您的server下载该文件。
在插件设置页面的 “CDN “选项卡上进行配置。这是一项高级技术,需要对网络服务器或 CDN 的工作原理有基本了解。配置 CDN 后,请务必清除文件缓存。
REST API
现在有用于访问此插件设置的 REST API 端点。您需要作为具有查看设置页面权限的管理员用户进行身份验证才能使用它。尚未记录此内容,但您可以在 “rest” 目录中找到处理此内容的所有代码。
自定义缓存
现在可以使用 add_cacheaction() 函数挂钩缓存过程。
三个钩子(hooks)可用:
- wp_cache_get_cookies_values” – 修改 WP 缓存使用的密钥。
- add_cacheaction” – 在第二阶段运行。允许插件添加 WordPress 挂钩。
- cache_admin_page” – 在管理页面中运行。用它来修改该页面,或许可以添加新的配置选项。
还有一个常规的WordPress过滤器。使用“do_createsupercache”过滤器来自定义缓存前的检查。该过滤器接受一个参数。WP-Cache的wp_cache_get_cookies_values()函数的输出。
WP Super Cache 具有自己的插件系统。 加载 WP Super Cache 时将加载此代码,并且可用于更改缓存的方式。 这是在大多数 WordPress 加载之前,因此某些功能将不可用。 插件可以位于 PHP 可以加载它们的任何位置。 添加您自己的插件:
- 通过将插件放在 wp-content/plugins/wp-super-cache-plugins 目录中,或
- 通过调用 wpsc_add_plugin($name),其中 $name 是插件的完整文件名和路径。你只需要调用一次该函数就可以添加它。使用 wpsc_delete_plugin($name)将其从加载的插件列表中删除。
WP Super Cache使用的用于识别“已知用户”的cookie现在可以通过将这些cookie的名称添加到插件配置中的列表中进行修改。使用wpsc_add_cookie($name)添加新的cookie,使用wpsc_delete_cookie($name)删除cookie。cookie名称还会修改插件使用的mod_rewrite规则,但我建议使用简单模式缓存以避免更新.htaccess文件时出现复杂问题。 cookie的名称和值用于区分用户,因此您可以在您的网站上为每种类型的用户设置一个cookie,但是每个用户类型的cookie值可以不同。他们将被提供不同的缓存文件。
请参阅 plugins/searchengine.php 作为我的 No Advertts for Friends 插件使用的示例。
故障排除
如果安装插件后出现问题,请检查以下几点:
- wp-content是否可以被Web服务器写入?
- 是否存在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-content/cache/supercache/。是否存在目录和文件?
- 您的php error_log中有什么内容吗?
- 如果您的浏览器在安装超级缓存后一直要求保存文件,则需要禁用超级缓存压缩。进入设置->超级缓存页面,然后在将其禁用。
- 当PHP的安全模式启用时,该插件无法发挥最佳性能运行。您的管理员必须禁用该功能。
- 如果页面的缓存有时是随机的,而有时不是,则您的博客可能可以通过带和不带”www”前缀的两种方式进行预览。您应该选择一种方式,并安装Enforce www preference插件,如果您使用的是旧版的WordPress安装。则最新版本的WordPress会自己重定向(无论如何,您都应该运行最新版本的WordPress!)。
- Dreamhost 私有服务器的用户如果收到关于增加CPU使用量的错误信息,则应该编辑 wp-content/wp-cache-config.php,并将缓存目录设置为”/tmp/”。更多内容请参阅此讨论。
- 文件锁定错误,例如“无法获取密钥0x152b:权限被拒绝…”或“ WP Super Cache未缓存页面。无法获取mutex锁”。这表明您可能需要使用文件锁定。编辑wp-content / wp-cache-config.php并取消“ $ use_flock = true”的注释或将$ sem_id设置为其他值。最后,您还可以从“管理”页面禁用文件锁定。
- 如果使用粗略的文件锁定,请确保cache/wp_cache_mutex.lock可以被Web服务器写入。
- 缓存文件夹不能放在NFS或Samba或NAS共享上。其必须在本地磁盘上。除非缓存文件夹位于本地计算机,否则文件锁定和删除过期文件将无法正常运作。
-
如果 WordPress 找不到 wp-cron.php,则旧缓存文件的垃圾回收将不起作用。如果您的主机名解析为 127.0.0.1,可能会导致垃圾回收无法工作。检查访问日志中的 wp-cron.php 条目。它们是否返回 404(未找到文件)或 200 代码?如果是 404 或在任何地方都找不到 wp-cron.php,WordPress 可能在错误的地方寻找该脚本。您应该咨询服务器管理员来纠正这个问题,或者在 Unix 服务器上编辑 /etc/hosts,删除以下一行。您的主机名必须解析到网络/互联网上其他服务器使用的外部 IP 地址。更多信息请参见 http://yoast.com/wp-cron-issues/。像 “127.0.0.1 localhost localhost.localdomain” 这样的行就可以了。
127.0.0.1 example.com - 如果通过超级缓存向您的访问者提供服务的是旧页面,则您可能缺少Apache模块(如果您不使用Apache,则有可能缺少的是其等效模块)。需要这3个模块:mod_mime、mod_headers和mod_expires。最后两个模块对于确保浏览器加载您站点的现有页面的最新版本尤为重要。
- 错误信息:”WP Super Cache已安装,但已损坏。wp-content/advanced-cache.php中wp-cache-phase1.php的路径需要修复!”,如果以上错误信息出现在每个页面的最末。可以用您喜欢的编辑器打开wp-content/advanced-cache.php文件。查看wp-cache-phase1.php的路径是否正确?这个文件通常在wp-content/plugins/wp-super-cache/中。如果路径不正确,缓存引擎将无法加载。
- 缓存不起作用。重新加载时,博客上的时间戳不断变化。检查.htaccess规则中的路径是否与supercache目录所在的位置匹配。您可能需要对其进行硬编码。尝试禁用超级缓存模式。
-
如果超级缓存缓存文件已生成但未提供,请检查所有 wp-content/cache/supercache 文件夹(以及每个 wp-content 缓存和超级缓存文件夹)和 wp-content/cache/.htaccess 的权限。如果 PHP 以不同于 Apache 的用户身份运行,且权限严格控制,则 Apache 可能无法读取 PHP 生成的缓存文件。要解决这个问题,您必须在 wp-config.php 中添加以下一行(添加到 WP_CACHE 定义的上方),然后清除缓存。
umask( 0022 ); -
如果在插件中启用压缩功能后在浏览器中看到垃圾信息,则可能是网络服务器已经启用了压缩功能。在 Apache 中,您必须禁用 mod_deflate,或在 PHP 中启用 zlib 压缩。有三种方法可以禁用。如果你有 root 访问权限,编辑 php.ini,找到 zlib.output_compression 设置并确保其为 “关闭”,或者在 .htaccess 中添加此行:
php_flag zlib.output_compression off如果那不起作用,将这行代码添加到您的 wp-config.php 文件中:
ini_set('zlib.output_compression', 0); - 当您访问您的站点时,”白屏 “或空白页几乎都是由PHP错误引起的,但也有可能是由APC引起的。如果存在问题,请禁用该PHP扩展,并用eAccelerator或Xcache扩展代替。
- 在卸载之后,如果您也删除了WordPress的mod_rewrite规则,您的固定链接可能会被破坏。通过访问 “设置”->”固定链接 “页面并再次保存该表单来重新生成这些规则。
- 如果您的博客无法加载,请确认wp-config.php文件内容是否正确。是否缺少开头或结尾的PHP标签?
- Your front …
