该插件可以从您的动态WordPress博客中生成静态html文件。 生成html文件后,您的WEB服务器将直接使用html文件来提供服务,而无需处理相对较臃肿和昂贵的WordPress PHP脚本。

静态html文件将提供给绝大多数用户:

  • 未登录的用户。
  • 没有在您的博客上留下评论的用户。
  • 或者没有查看过密码保护文章的用户。

99% 的访问者将会被提供静态 HTML 文件。一个缓存文件可以被服务数千次。其他访问者将会被提供定制的缓存文件,以适应他们的访问。如果他们已登录或留下评论,这些详细信息将会被显示和缓存给他们。

该插件以3种方式提供缓存文件(按速度排序)。

  1. 专家。最快的方法是使用Apache mod_rewrite(或您的web服务器支持的任何类似模块)来提供 “超级缓存 “静态html文件。这些方法完全绕过了PHP,且速度飞快。如果您的服务器受到大量的流量冲击,也可以很容易的应对,因为请求是 “轻量级 “的。需要Apache mod_rewrite模块(如果您设置有自定义的固定链接,则该模块可能已经安装)并预先修改了您的.htaccess文件,这些修改势必会存在一些风险,如果修改不正确,则可能会使您的站点瘫痪。
  2. 简单。超级缓存的静态文件可以由PHP提供,这是使用插件的推荐方式。如果存在”超级缓存”文件,插件将提供该文件,它的速度几乎与mod_rewrite方法一样快。这种方式更容易配置,因为不需要更改.htaccess文件。您仍然需要自定义永久链接。在此缓存模式下,您可以保持页面的某些部分是动态的。
  3. WP-Cache 缓存。主要用于缓存已知用户的页面、带参数的 URL 和订阅源。已知用户是已登录的用户、留下评论的访客或应显示自定义每个用户数据的用户。这是最灵活的缓存方法,但速度稍慢。如果禁用了超级缓存,WP-Cache 缓存也会缓存未知用户的访问。在此模式下,您的页面也可以有动态部分。此模式始终启用,但您可以单独禁用已知用户、带参数的 URL 或订阅源的缓存。如果您只想使用 WP-Cache 缓存,请在 wp-config.php 中将常量 “DISABLE_SUPERCACHE” 设置为 1。

如果您不熟悉编辑 PHP 文件,那么请使用简易模式。它易于设置且非常快速。

推荐设置

  1. 简单的缓存。
  2. 压缩页面。
  3. 不缓存已知用户的页面。
  4. 缓存重建。
  5. CDN支持。
  6. 额外的主页检查。

垃圾收集是清理过期和陈旧的缓存文件的行为。过期时间没有正确的值,但一个好的起点是1800秒。

请考虑删除“被拒绝的用户代理”文本框中的内容,并允许搜索引擎为您缓存文件。

尽可能多地预载帖子,并启用 “预载模式”。旧缓存文件的垃圾回收将被禁用。如果你不关心侧边栏小部件是否经常更新,可将预载时间间隔设置为 2880 分钟(2 天),这样你的所有文章就不会经常被重新缓存。预载发生时,被刷新帖子的缓存文件会被删除,然后重新生成。之后会对所有旧文件进行垃圾回收,以清除过时的缓存文件。
即使启用了预加载模式,在修改帖子或发表评论时,缓存文件仍会被删除。

开发

文档

如果您需要更多信息,可以查看wiki开发人员文档

预加载

以下术语的翻译如下: “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)可用:

  1. wp_cache_get_cookies_values” – 修改 WP 缓存使用的密钥。
  2. add_cacheaction” – 在第二阶段运行。允许插件添加 WordPress 挂钩。
  3. cache_admin_page” – 在管理页面中运行。用它来修改该页面,或许可以添加新的配置选项。

还有一个常规的WordPress过滤器。使用“do_createsupercache”过滤器来自定义缓存前的检查。该过滤器接受一个参数。WP-Cache的wp_cache_get_cookies_values()函数的输出。

WP Super Cache has its own plugin system, loaded before most of WordPress. Add your own plugin either by putting it in the wp-content/plugins/wp-super-cache-plugins directory, or by calling wpsc_add_plugin( $name ) with the full path to the plugin.

The cookies used to identify “known users” can be modified with wpsc_add_cookie( $name ) and wpsc_delete_cookie( $name ). See plugins/searchengine.php as an example.

故障排除

如果安装插件后出现问题,请检查以下几点:

  1. wp-content是否可以被Web服务器写入?
  2. 是否存在wp-content/wp-cache-config.php?如果否,请将wp-super-cache/wp-cache-config-sample.php文件复制到wp-content/wp-cache-config.php中,并确保WPCACHEHOME指向正确的位置。
  3. 是否有wp-content/advanced-cache.php?如果没有,那么你必须将wp-super-cache/advanced-cache.php复制到wp-content/。你必须编辑该文件并更改路径,使其指向wp-super-cache文件夹。
  4. 如果页面没有被缓存,请删除wp-content/advanced-cache.php,然后按照上面的建议重新创建。
  5. 确保以下一行位于 wp-config.php 中的 “require_once(ABSPATH.’wp-settings.php’); “行之上:

    define( 'WP_CACHE', true );
    
  6. 尝试转到设置->超级缓存页面,启用缓存。
  7. 查看wp-content/cache/supercache/。是否存在目录和文件?
  8. 您的php error_log中有什么内容吗?
  9. 如果您的浏览器在安装超级缓存后一直要求保存文件,则需要禁用超级缓存压缩。进入设置->超级缓存页面,然后在将其禁用。
  10. 文件锁定错误,例如“无法获取密钥0x152b:权限被拒绝…”或“ WP Super Cache未缓存页面。无法获取mutex锁”。这表明您可能需要使用文件锁定。编辑wp-content / wp-cache-config.php并取消“ $ use_flock = true”的注释或将$ sem_id设置为其他值。最后,您还可以从“管理”页面禁用文件锁定。
  11. 如果使用粗略的文件锁定,请确保cache/wp_cache_mutex.lock可以被Web服务器写入。
  12. 缓存文件夹不能放在NFS或Samba或NAS共享上。其必须在本地磁盘上。除非缓存文件夹位于本地计算机,否则文件锁定和删除过期文件将无法正常运作。
  13. Garbage collection of old cache files won’t work if WordPress can’t find wp-cron.php. Check your access_logs for wp-cron.php entries and that your hostname resolves to the external IP address other servers on the network/Internet use.
  14. 如果通过超级缓存向您的访问者提供服务的是旧页面,则您可能缺少Apache模块(如果您不使用Apache,则有可能缺少的是其等效模块)。需要这3个模块:mod_mime、mod_headers和mod_expires。最后两个模块对于确保浏览器加载您站点的现有页面的最新版本尤为重要。
  15. 错误信息:”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/中。如果路径不正确,缓存引擎将无法加载。
  16. 缓存不起作用。重新加载时,博客上的时间戳不断变化。检查.htaccess规则中的路径是否与supercache目录所在的位置匹配。您可能需要对其进行硬编码。尝试禁用超级缓存模式。
  17. 如果超级缓存缓存文件已生成但未提供,请检查所有 wp-content/cache/supercache 文件夹(以及每个 wp-content 缓存和超级缓存文件夹)和 wp-content/cache/.htaccess 的权限。如果 PHP 以不同于 Apache 的用户身份运行,且权限严格控制,则 Apache 可能无法读取 PHP 生成的缓存文件。要解决这个问题,您必须在 wp-config.php 中添加以下一行(添加到 WP_CACHE 定义的上方),然后清除缓存。

    umask( 0022 );
    
  18. 如果在插件中启用压缩功能后在浏览器中看到垃圾信息,则可能是网络服务器已经启用了压缩功能。在 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);
    
  19. 在卸载之后,如果您也删除了WordPress的mod_rewrite规则,您的固定链接可能会被破坏。通过访问 “设置”->”固定链接 “页面并再次保存该表单来重新生成这些规则。
  20. 如果您的博客无法加载,请确认wp-config.php文件内容是否正确。是否缺少开头或结尾的PHP标签?
  21. 您的首页没问题,但文章和页面却显示404?转到 “设置”->”固定链接”,选择好自定义固定链接结构后,点击 “保存”。您可能需要手动更新您的.htaccess文件。
  22. 如果某些字符在您的网站上显示不正确,可能是您的服务器配置不正确。您需要告诉访问者使用的字符集。进入 “设置”-> “阅读”,复制 “页面和供稿的编码 “值。编辑包含所有 Supercache 和 WordPress 重写规则的 .htaccess 文件,并在顶部添加此内容,用复制的值替换 CHARSET。(例如,”UTF-8)

    AddDefaultCharset CHARSET
    
  23. 错误消息:”WP Super Cache已安装但已损坏。常量WPCACHEHOME必须在wp-config.php文件中设置,并指向WP Super Cache插件的目录。”如果已上消息出现在每个页面的最末。您可以删除wp-content/advanced-cache.php并重新加载插件设置页面,或者编辑wp-config.php并查找WPCACHEHOME确保其指向wp-super-cache文件夹。该路径通常是wp-content/plugins/wp-super-cache/,但您可能需要该文件的完整路径(这样可以简单的通过设置页面将其修复)。如果路径不正确,缓存引擎将无法加载。
  24. 如果您的服务器因插件使用的信号量数量而遇到问题,那是因为您的用户正在使用不推荐的文件锁定(但是少数用户需要使用)。您可以通过定义常量WPSC_DISABLE_LOCKING来全局禁用文件锁定,或者定义常量WPSC_REMOVE_SEMAPHORE,以便在每个页面缓存后调用sem_remove(),但这似乎会对其他请求相同信号量的进程造成问题。最好禁用它。
  25. 在wp-config.php或wp-cache-config.php中设置变量$htaccess_path为您全局.htaccess文件的路径,如果插件在错误的目录中查找该文件。如果您以非常规的方式安装了WordPress,可能会发生这种情况。