网站建设

解决启用WP-Super-Cache后出现的几个问题

Jager · 4月8日 · 2014年 · 7196次已读

近期,随着新版互推联盟自适应iframe代码的推出,调用的博友也慢慢增加了 ,这是很高兴的事情,也有博友反应调用的这个页面加载会有点慢。我来说明一下,因为这个互推联盟这个页面是纯动态页面,也就是每次刷新都要重新从数据库查询并输出,而且随着成员越来越多,这加载速度也会越来越慢,而且,对玛思阁的服务器也会造成更大的负载。这是一个需要解决的问题。

第一时间,我就想到使用静态缓存此页面的方法来解决加载过慢的问题。于是就安装了WP-Super-Cache这个插件,并根据实际情况设置了下,发现效果还不错!但还是存在有2个问题:

① 文章侧边栏跟随模块不见了,空出一大片;

② 知更鸟的前台登陆功能失效;

③ WP-PostViews 无法实时显示浏览次数,得缓存刷新后才能显示;


问题①: 在网上找了半天,没找到相关经验教程,只好看下侧边栏丢失页面的源代码,发现原本存在的源码也消失了!

开始Debug:进入插件设置,把缓存全部清除,然后打开一篇文章,发现跟随模块又回来了!难道缓存的时候不会缓存侧边栏么???

好吧,我继续打开几篇文章,居然发现有的有跟随边栏,有的却没有??这太诡异了吧!~!

在多次查看之后,发现一个规律,我第一时间打开的文章都会正常存在跟随侧栏,而其他文章跟随侧栏却不见了!

于是,立马明白了问题所在:

WP-Super-cache的预缓存功能会和某些后置加载的动态内容造成冲突!而手动开启页面触发的缓存则不会出现这个问题,因为手动触发的缓存会缓存所有开启的内容,当然也包括了跟随边栏!!!

<1> 简单的解决办法停用预缓存功能,删除所有已缓存的内容即可。

解决启用WP-Super-Cache后出现的几个问题

Ps:简单说就是禁止插件预先缓存所有页面,而是切换到“触发缓存”状态。例如某页面第一次访问后,将自动生成静态页面,而且包含跟随边栏,下次访问将自动调用静态内容。但是,跟随模块内容是固定不变的。

 

<2> 更好的解决办法:修改侧边栏代码,删除前置判断语句,改为强制执行即可。

具体修改方法:

1、编辑知更鸟主题的侧边栏功能模块sidebar.php,在代码最后找到下面这段:

<?php wp_reset_query();if (is_single() || is_page() || is_archive() || is_search() || is_404()) { ?>  
 <?php if (function_exists('zg_recently_viewed')): if (isset($_COOKIE["WP-LastViewedPosts"])) { ?>  
    <?php if (get_option('swt_recently') == '关闭') { ?>  
    <?php { echo ''; } ?>  
    <?php } else { include('includes/recently.php'); } ?>  
    <?php } endif; ?>  
    <?php } ?>

然后将段代码如下修改即可解决问题:

<?php wp_reset_query();if (is_single() || is_page() || is_archive() || is_search() || is_404()) { ?>  
<?php include('includes/recently.php'); ?>  
<?php } ?>

简单说明:原理就是去掉了第一步的判断,让wp-super-cache插件在预缓存时强制执行recently.php,这样预缓存得到的静态页面也就有了跟随模块了!但是,还是有个问题,知更鸟主题的这个跟随模块是显示访客最近浏览的文章,那都静态化了,还统计毛的最近浏览啊!别人浏览文章的时候,你侧边栏里头的最近浏览一成不变,有点说不过去!

所以,玛思阁直接将最近浏览改成了随机文章了,这样能凑合用用,至于如何修改,就不啰嗦了!

 


问题②:正常情况下,知更鸟主题有个前台登陆按钮,点击后会弹出鸟哥做的前台登陆框,输入账号密码登陆后,将以登陆身份保留在原来的页面!

而在Wp-Super-Cache插件缓存某页面之后,这个前台登陆功能将失效,登陆后返回的页面还是未登录状态,原因也非常简单,因为是静态页面,所以登陆成功后返回的依然是未登录状态的静态页面!(其他主题未研究,可如果是前台登陆框,估计都有会有这个问题。)

<1> 简单解决办法修改登陆后的跳转链接,登陆成功后跳转到后台管理页面,而不是留在当前页。

具体做法:

编辑知更鸟主题下的login.php,将

<?php echo $_SERVER[ ‘REQUEST_URI’ ]; ?> 替换成WP后台地址,即 http://yousite.com/wp-admin 即可。

现在,静态页面的登陆成功后,将跳转到后台,不能登录的问题得以解决!

虽然,不是很完美,不过一般站点都是站长自己用,我们登陆后一般也是到后台操作,所以这不失为一个简单的解决办法!不过遗憾的是,知更鸟的前台编辑链接按钮就不能用了!因为,未登录状态,这个编辑按钮是不会显示的!有时间我再研究下。

<2> 最佳解决办法:在插件高级选项中,勾选【不要为已知用户缓存。 (推荐)】选项即可搞定!

解决启用WP-Super-Cache后出现的几个问题

简单说明:此方法已测试通过,勾选这个功能后,已登录用户将关闭缓存功能,所以可以解决无法登陆的问题,而且知更鸟前台编辑按钮也回来了!

但是也有弊端,主要是使用原生评论框的博客,勾选这个功能后,留过言的博友都将识别为已知用户,和已登录用户一样看到的依然是实时动态页面!但是,使用第三方评论框的博客将没有这个问题,各种利弊请自行取舍。

所以,如果博客采用原生评论框,推荐使用方法<一>,如果是第三方评论框,则可以使用更简单的方法<二>!

当然,如果你不介意对留言用户关闭缓存功能的话,那方法<二>是最好的了!


问题③:页面都静态化了,那文章浏览计数肯定是不会实时显示的啦!

当然,肯定也会有解决办法,通过搜索,发现JS版本的postviews,可以兼容静态缓存插件!

经过测试,网上已有JS版本都过旧,没法用,等有时间在来补上可用的JS版本。

。。。。

NND,下午就因为弄这个js版本postviews,害的我以前所有的浏览数都给清零了!最后只好拿备份数据来恢复,蛋疼!不弄这个东西了,反正无所谓!

好了,以上就是玛思阁启用wp-super-cache插件后发现的问题以及解决办法,希望可以帮到你!

38 条回应
  1. maillot trek 2014-4-8 · 9:50

    小白菜飘过~

    • Jager 2014-4-8 · 9:51

      我是小白鼠。。

      • maillot trek 2014-4-8 · 9:52

        实验的小白鼠吗。

        • Jager 2014-4-8 · 9:53

          恩,是啊

  2. 夏日博客 2014-4-8 · 13:38

    如果使用的是WP-Super-cache缓存插件,,只要前台有点更改,都要后台删除缓存文件重新生成。。

    • Jager 2014-4-8 · 16:09

      是挺麻烦的。。

  3. 圆月博客 2014-4-8 · 13:42

    发现互退联盟的调用代码失效了

    • Jager 2014-4-8 · 16:07

      刚刚在调试,已恢复。

  4. Alick.Li 2014-4-8 · 23:11

    原来你的互推联盟是用这个弄的…为什么我的多说没头像?

    • Jager 2014-4-8 · 23:50

      互推联盟用这个弄的?这是静态化插件,和互推联盟没关系呢。我这里看你多说是有头像的,是个阿狸狐。

  5. cy 2014-4-9 · 9:25

    缓存或多或少都会出现这些问题。。

    • Jager 2014-4-9 · 9:29

      动态网页,强行静态,这是必然的。。。

      • cy 2014-4-9 · 9:34

        所以说我没用这个插件了,哈哈。。

        • Jager 2014-4-9 · 9:41

          用了速度倒是提高不少。。各种利弊得自己取舍了。

  6. 王小晨Cheney 2014-4-12 · 17:02

    不错不错,这个插件对于提升速度来讲很有必要。但是看出来针对部分稳定到是很麻烦,而且刚刚看夏日评论,貌似只要有修改就奥重新缓存属实麻烦

    • Jager 2014-4-12 · 17:08

      其实,他说的是老版本的,只有当你安装了才知道这个新版的强大。重新生成缓存都是自动判断的,你根本不需要操心。、。。

      • 王小晨Cheney 2014-4-12 · 17:15

        是吗?那你评论的这些需解决问题还是存在于你说的这个新版本当中把- -我觉得我那主机的确有点慢,下一步准备看看换个主机。有没有好的推荐?

        • Jager 2014-4-12 · 18:42

          文中已经说明,用多说就没有任何影响。主机我感觉我用的这个还行,如果要买的话从我这点过去吧,我还能得点回扣。

          • 勇敢de小细菌|ixchen.com 2014-4-12 · 18:47

            额,已经看过上面那个,就是那个什么关于文章的和侧边栏的,到时候按照那个该关闭的关闭就成了是把

          • 勇敢de小细菌|ixchen.com 2014-4-12 · 18:53

            主机买的哪个?你买的类型。

            • Jager 2014-4-12 · 19:31

              我的网站下面不是有个野草链接么? 我买的标准版,但是优惠5折,100元买的。

              • 勇敢de小细菌|ixchen.com 2014-4-12 · 21:33

                嗯呢,等我那个快到期的时候在野草买把,刚才测试了一下,貌似。不错

              • 勇敢de小细菌|ixchen.com 2014-4-12 · 21:34

                对了,有个东西你可以好好研究之,我之前研究过,但是我的代码功底实在比较差,对应用的开发较差,我觉得你比较适合做CMP到wordpress的调用,是一个FLASH播放器框架,日后调用到博客我觉得效果很帅。

                • Jager 2014-4-12 · 21:39

                  播放器还是什么?

                  • 勇敢de小细菌|ixchen.com 2014-4-12 · 21:52

                    刚才你推荐的那个插件安装了,但是貌似没什么可编辑的选项,看了下分类目录,好像没变化- -。

                    • Jager 2014-4-12 · 21:57

                      Removes ‘/category’ from your category permalinks. 只是移除原始分类前面的 /category路径

                    • 勇敢de小细菌|ixchen.com 2014-4-12 · 22:04

                      额,还是不太明白,但是我看分类目录貌似没什么变化。 [害羞] ,貌似原因就是不仅显示了1级目录,还显示了2级目录。

                    • Jager 2014-4-12 · 22:15

                      是的

                    • 勇敢de小细菌|ixchen.com 2014-4-12 · 23:44

                      好把,那你那个是如何解决这个问题的呢?- –

  7. 梦轩丽人 2014-4-27 · 13:08

    我遇到的就是问题3,看了网上好多种做法,不敢一一测试,反正我玩着浏览量还少,直接停用WP-Super-Cache,等更成熟的做法后再使用。

  8. mengbuke 2015-5-26 · 16:30

    请问预缓存 6000篇 文章需要多大的硬盘

  9. mohan 2015-10-14 · 23:44

    不知道博主,现在有没有用CDN静态加速,这个用户登录状态是怎么解决的?

  10. Jager 2015-10-15 · 11:18

    本地纯静态+CDN静态缓存,使用js+cookies技术记住用户信息,而非真正的登录态。
    另外,留言带上自己的网站也是一种美德。

  11. 阅读纵横 2016-3-20 · 16:17

    谢谢博主,总算搞清楚了“不要为已知用户缓存”,原来留过言的也算啊。

  12. 留过言 2016-10-1 · 10:25

    我说怎么启用原生评论后自己测试就老提示为已登陆用户,不给缓存呢,有没好的解决办法

  13. 游者记 2017-7-26 · 9:05

    我的也是WP-Super-Cache 导致阅读数量不准,不知道怎么解决

  14. 腾蛙网 2017-9-18 · 12:50

    正在用速度确实快

  15. 张单 2019-5-18 · 1:53

    示:请输入评论内容。

    滑动解锁才能