WP Super Cache 与 WordPress 首页乱码

很多主机为了提高 WordPress 网站的响应速度而使用缓存插件,其中很出名的一个就是 WP Super Cache(简称 WPSC)。WPSC 可以提供 2 种类型的缓存页面,一种是普通的 HTML 文件,一种是压缩过的 HTML 文件(gzip 格式)。因为压缩后的文件小了很多,可以非常显著的减少文件传输的时间。但是在某些情况下,启用压缩功能后可能会导致网站首页显示为乱码,或者在访问首页时让你下载某个 gzip 文件而不是显示正确页面。

目前所知的一个情况就是,当服务器使用的是 LiteSpeed (一个经过优化的、替代 Apache 的服务器方案)时会出现这样的错误。而且似乎只出现在网站首页,其它页面不会有乱码的问题。该问题应该是由于 LiteSpeed 内部压缩机制造成的。某些服务器为了提高效率和性能,可能会采用 LiteSpeed 来作为服务器程序。

经进一步验证,出现乱码的情况并不只限于首页,所以遇到此情况时请使用方案二!

解决方案一

很简单,只需要在开启 WPSC 压缩功能的同时,禁止其缓存首页即可。如下图所示,在 WPSC 设置页面的“高级(Advanced)”选项卡里的相应位置,根据你使用的首页情况(1、自定义静态页面做首页;2、默认的首页,也就是最新文章列表)将需要的对应条目勾选,然后保存即可。注意,这里设置的是,如果你勾选,则 WPSC 不对其进行缓存!

解决方案二

解决方案一的缺点就是首页就完全是动态生成的了,也就是连静态 HTML 页面缓存都没有。还有个折衷的方案就是直接禁用压缩功能。这么做其实也没什么不好,甚至可能比方案一更好。因为之所以会出现乱码,是因为 WPSC 的压缩与服务器(通常是 LiteSpeed)的压缩出现矛盾(至于为什么只发生在首页还有待进一步探索)。也就是说,使用 LiteSpeed 的服务器通常都已经启用了压缩功能,你不需要使用 WPSC 提前进行压缩了。放心,这个 on the fly 的及时压缩方式并不会多消耗多少时间,只是会多消耗不少 CPU。

只是我还没想好到底使用上述哪个方案,所以把 2 个都写上,差别应该不是多大。

这些问题在下面的文章中都有提到:

http://paogray.com/2151

https://www.acsite.net/tw/forum/index.php?topic=1728.0

http://www.ttjs.org/enabled-lastest-wp-super-cache.html

另外,http://citydog.me/501.html 一文对该情况只出现在首页的状况进行了描述,并提供了上述解决方案二。

经进一步验证,出现乱码的情况并不只限于首页,所以遇到此情况时请使用方案二!

后记

经过后来使用不同的服务器,我发现出现乱码的情况只发生在 litespeed 服务器中,也许与 litespeed 经过优化有关,存在某些冲突。其它的服务器没发现类似情况。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/wp-super-cache-and-messed-up-homepage/>。转载请保留此信息及相应链接。

9 条关于 “WP Super Cache 与 WordPress 首页乱码” 的评论

  1. 引用通告: 理解和使用服务器的压缩传输功能 « 水景一页

  2. wordpress整合后 乱码为不认识的繁体字 我想把的网站和wordpress 整合 就是上面是推广页面,下面是wordpress的文章 有利于收录 上面程序也是php的编码是GB2312的 wordpress是UTF-8的 请问怎样才能 完美整合啊?两个程序是在一个空间里wordpress转在子文件夹。 下面是wordpress的文章 有利于收录 可是我整合出来的却是这样的 上面正常 下面是中文乱码》 现在的网站是这样的 http://www.n5518.com 前辈帮忙!3728136***83QQ 

    • 1、把你的QQ号改了改,免得大家都能看到;
      2、你说的问题似乎与这篇文章无关;
      3、我没有发现你的首页有什么问题。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>