Maison >développement back-end >tutoriel php >博客小站启用静态化
我本人对网站速度要求不高,通常页面打开耗时只要不超过10秒,我都不会介意。但自己博客最近出了几次事让我有点郁闷,一次是因为攻击导致资源消耗过高,博客被网管强制停机。另一次是因为谷歌字体的某些问题,导致所有页面打开之后迟迟无法加载完毕。虽然之后找了360网站卫士做庇护,但终归不是长久之计,将网站静态化的想法冒了上来。
我以为玩独立博客上了些年头的站长们都应该懂什么叫静态化的,见昨天方室网志的阿福对此还不明所然。我在此解释一下,类似Wordpress的网站(依赖数据库的网站)展现一个页面,需要后台的从收到请求开始——从数据库抽取文章、评论等数据——数据交给服务器的PHP模块合成标准格式网页文件——传网页文件送至客户端渲染。客户端渲染之后才是我们看到的网页。其中影响网站打开速度的环节主要:主机数据库性能、主机PHP模块合成网页文件的速度。带宽也有一定影响,但考虑到个人博客通常都是一些文字信息,文件不多,这点影响不大。
所谓网站静态化,就是提前将网页合成,存在临时仓库。访客有请求的时候直接从仓库拿出传送,不用再到后方数据库、PHP生产车间匆匆忙忙“制造”网页。这极大提高了博客响应速度,缺点是网页上有如文章阅读次数、最新评论留言等动态信息时,静态缓存需要额外的JS才能实现实时更新,好在最新的插件都能给出很好的解决方案。
WordPress静态化之后,与Jekyll等纯静态博客的区别。在我看来纯静态博客完全不需要数据库,是本地生成标准格式网页之后,上传空间就OK了。而Wordpress的静态化是由服务主机生成网页,静态后速度性能对比,Jekyll之类的纯静态网站快是毋庸置疑。而Wordpress则要看具体静态的方式。就我使用的WP Super Cache这个插件来说,如果使用了推荐的mod_rewrite 缓存模式,通过写入htaccess配置,调节好参数,缓存文件生成之后,性能对比来说相差不大。纯静态博客缺点是无法支持评论,要实现评论得依赖第三方服务(这意味着博主无法自由管理访客留言)。而Wordpress静态化之后,有评论提交会自动刷新缓存,两者对比各有千秋。
网上有很多关于Wordpress伪静态的文章,甚至有说WP Super Cache并非真静态,而后又介绍其他可以实现真正静态的插件。在我看来这些都是概念混淆,目的为了推广其他静态化插件罢了。伪静态只不过是修改了文章固定链接,现在主机一般都会支持,但固定链接格式对性能没啥影响,说白了还是等于没有静态。说什么真静态,Wordpress与纯静态博客本来就是两个不同的东西,无法相提并论。但WP Super Cache作为Wordpress官方团队出品的静态化插件,无论是性能、个性配置,支持力度上都毋庸置疑。说它并非真静态的,只能说是那个家伙非但自己不懂,还要混淆视听,对此我只能呵呵!
WP Super Cache也不是没有缺点,总的来说它门槛有点高,故网上很多建议小流量博客不推荐使用。因为配置不好,效果打折不说,卸载起来还会牵扯到htaccess以及wp-config.php。总的来说比较麻烦,说白就是技术不到家的话,用了吃力未必能讨好。倘若用对了,博客速度就能有质的提升,其中利害掂量得看各位自己了。
使用方法,网上教程很多,我只给出提醒要注意的地方。
一、保证wp-content目录有读写权限,同时,保证Wordpress根目录的wp-config.php和.htaccess文件也有写入权限,最好全站程序备份一次。
二、你安装激活之后可以首先启用插件的测试,如果提示:页面不相符!时间戳有差异或者不存在!说明缓存没有生效。这时候就需要检查插件或则主题是否有冲突。检查办法就是排除法。先将其他插件全部停掉再测试,或则换回官方主题再测试。缓存生效的页面源代码底部是有如“Cached page generated by WP-Super-Cache on 2016-05-02 09:42:42”字样标注该静态页面生成时间。
特别提醒:这里换官方主题,指的是未经修改过的默认主题。有些朋友会自己修改主题,但是增加的某些代码可能是导致这个问题的原因。已经确认了是自己之前使用的主题的问题,那需要切换回之前的主题,并仔细检查主题的所有文件。尤其需要注意的是functions.php,header.php等文件。查看文件之中是否包含有压缩功能的函数;或者不正确使用的PHP的ob_start函数。可以通过搜索zip或者ob_start等关键词进行搜索。搜索之后,可以先尝试屏蔽(或者删除,删除之前请做好备份)相应代码,然后重新进行测试缓存功能(记得先删除原来的缓存)。
三、插件能正常启用的话,就是开始下面的配置了。首先是启用推荐的mod_rewrite 缓存模式。如果主机不支持的话启用PHP 缓存模式也可,普通模式就不推荐了。启用之后,在高级选项卡里边,推荐配置是
1、当有新文章或页面的发布或更新时清除之前的缓存文件。(这个选项一定要取消勾选。否则一旦发布新文章,以前的所有的缓存文件都会消失不见,非常影响网站访问速度和SEO效果。)
2、移动设备支持。(使用自适应主题的这个可以取消勾选,否则缓存里会多出大量不必要的mobile.html之类的缓存文件。为手机页面单独设置了主题的就可以勾选。)
3、压缩页面以便让来访者更快浏览。(网站支持压缩的话,就勾选吧。谁不喜欢速度快的网站呢?但要注意,部分主机虽然也支持,但勾选之后,预缓存生成会连续失败,还出现网站首页第一次访问会空白等等,总之就是有点小问题。所以此项必须谨慎)
4、不要为已知用户缓存。(最好不要勾选。因为已知用户也需要生成和读取缓存,总之有缓存最好了!)
5、让已知用户匿名使他们浏览的内容是缓存文件。(勾选。原理同上,一切以缓存为中心。)
6、当某页面有新评论时,只刷新该页面的缓存。(勾选。否则的话,来一个评论就刷新所有页面的缓存,真的太费劲了。)
7、设置对“搜索”页面以及“feed”订阅页面设置排除在外。免得每次搜索都激活一个缓存页面,很浪费空间。
四、开启预缓存,勾选预缓存模式并立即加载预缓存。这样不管有无访问激活,都可以给所有公开网页生成静态页面备用。至于缓存过期时间,对个人博客而言我建议是设置为0,禁用缓存过期。
最后,插件本身也支持CDN,使用了七牛加速服务的可以考虑配置。如果不想让静态网页文件通过七牛的,也请留心排除html等对应的静态化网页文件。