Drupal的Boost Cache是个好东西,可以实现将匿名用户访问的内容完全静态化缓存起来,绕过PHP和MySQL,只需要Apache就可以对付用户的浏览,可以极大提升网站性能。Boost模块的配置也比较灵活、复杂,可以设置排除某些种类的页面不缓存、可以设置更新周期及办法等等。今年我们用Drupal搭建的网站多数都是数据量大、更新不是很频繁的内容,基本上都使用了Boost。
不过偶尔有网友发来邮件,要求我们删除或者更新某个页面内容,如果只是删除某个页面的话,包含这个页面信息的分类页、Views页面可能都因为有Boost缓存而无法自动清除。还有我们自己在调试、修改网站的时候也需要更新一部分页面缓存以便验证效果。
以往解决的办法有两种:
- 一是SSH登录到服务器,进入相应的cache目录删除对应的缓存html和html.gz文件,这个缺点是还比较麻烦,对于频繁测试来说更不方便;
- 二是在管理员菜单的Performance-Boost里面全部刷新所有的缓存内容,这个缺点是刷新了本来不需要刷新的缓存,对于大数据量网站来说不可取。
以前也曾在网上找办法都没有找到,今天又花了一些时间找,其实这个功能Boost插件本身就已经带有了,只是默认没有显示出来而已。下面介绍设置的步骤:
- 用管理员帐号登录需要清除某个页面的网站;
- 在管理员菜单中进入区块列表(block);
- 将默认禁用的Boost: Pages cache status这个block放到上面来,例如放到左边栏的靠下位置,保存block设置;
- 再进入需要更新的页面,可以看到左边栏有显示:Expire In: 10 小时 4 分钟、Cache Generated: 4.13 seconds,这表示缓存内容10小时4分钟后过期,Cache产生耗时4.13秒,并带有一个“Flush Page”按钮;
- 只需要点击下面的“Flush Page”按钮就会更新当前页面;
- 点击按钮后左边栏显示变成了:This page is being served live to anonymous visitors, as it is not currently in the static page cache.也就是说这时用匿名方式再去访问这个页面就是看到的最新内容,因为已经不在静态页面缓存中了;
- 再改用匿名方式浏览这个页面,应该就是更新后的内容,打开页面HTML源代码会发现底部没有了“Page cached by Boost”的字样,如果再次刷新访问这个页面,打开页面HTML源代码就会发现底部又有了带新的时间标记的“Page cached by Boost”字样,表示缓存刚刚生成了新的。
我已经测试过,使用上面的办法可以清除某个单独node页面或者单独taxonomy的缓存。
完成了清除某个页面之后,那个block列表里面的Boost: Pages cache status设置就放在上面也行,以后可能还要flush其他页面,不用移动下来了。反正匿名用户也看不到,只有管理员可以看到。
评论