站点静态化——为网站启用Nginx缓存

作者: ganhai 分类: 技术 发布时间: 2017-08-03 21:24 ė 1269 6 没有评论

站点静态化——为网站启用Nginx缓存
生命不休,折腾不知。最近翻看张戈博客,看了很多站点优化提速的文章,学到了不少各种缓存的方法和技巧。
对于本站这样的博客小站,动态内容基本没有,所有最方便也最适合做全静态化。
当前使用WordPress插件WP Super Cache做静态缓存,用了一段时间也比较好,但是在这篇文章里看到了设置Nginx的fastcgi_cache缓存的方法,由于不依赖于php服务端,完全又nginx服务器相应HTML页面请求,性能应该更佳。而且这个做法实际上也是百度云加速、CloudFlare等CDN服务的实现方法,因此又开始折腾这种缓存方法,真正实现网站全静态化。

准备工作

nginx缓存依赖于ngx_cache_purge模块,如果使用军哥的lnmp一键包部署wordpress环境,这个模块是默认不安装的。因此需要下载ngx_cache_purge的源码重新编译安装nginx,具体过程记录在前一篇博文 无缝升级为nginx添加ngx_cache_purge模块

修改Nginx配置文件

打开Nginx的配置文件,对应本站的server段内容需要做一些修改

[/crayon]

前两行定义了缓存存储的路径,位于 /tmp/wpcache/tmp/wpcache/temp,如果这个路径不存在的话,手动创建这两个目录,并且确保www用户有可写权限。

安装自动清除缓存插件

按照前面的设置,nginx缓存应该可以运行了。但是有些时候我们希望某些页面能在发生更新的时候自动清除缓存(比如文章内容更新,访客评论,阅读数刷新),不然网站一直显示的是缓存的内容,那就适得其反了。
针对fastcgi_cache的方式有一个专门的WordPress插件来完成自动清理缓存工作,叫做Nginx Helper

在WordPress后台安装这个插件,激活并按照下面所示配置其他选项
站点静态化——为网站启用Nginx缓存
站点静态化——为网站启用Nginx缓存

缓存清理的行为是直接删除本机上存储的缓存文件,这个路径名由变量RT_WP_NGINX_HELPER_CACHE_PATH定义,因此还需要在WordPress根目录下的wp-config.php中新增一行.

[/crayon]

效果

设置完成后,重启php和nginx服务,然后在浏览器打开站点,F12调出调试栏。在页面的response header中会多出一个X-Cache标志。
– 如果状态为HIT,则表示命中缓存。
站点静态化——为网站启用Nginx缓存
– 如果状态为MISS,表示没有命中缓存,缓存需要生成。
– 如果状态为BYPASS,表示根据nginx规则不生成缓存。
站点静态化——为网站启用Nginx缓存

压力测试

经过这样的配置以后,再运行一次压力测试看看性能如何。
测试配置为每秒500个并发连接持续30秒,看看服务器响应速度和出错率。
站点静态化——为网站启用Nginx缓存
– 并发数量最高能处理每秒1000个,测试后半段维持每秒500个,相应时间测试开始时超过3000ms,后来就维持在200ms以内。
站点静态化——为网站启用Nginx缓存
– 出口速度大概14MB/s,对应带宽112Mbps,这速度让国内的云主机的小水管情何以堪。

总结

经过这次站点全静态化的配置,服务相应能力大幅提升,比WP Super Cache优化性能更好。
服务器端的全静态化,如果再搭配CloudFlare的CDN加速缓存,会带来一些副作用,导致源主机的更新不能及时体现到CDN镜像上,这一点还需要进一步研究。

本文出自扉启博客,转载时请注明出处及相应链接。

本文永久链接: https://www.feiqy.com/fastcgi_cache/

发表评论

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

Ɣ回顶部