Nginx下使用Fastcgi_cache和ngx_pagespeed优化WordPress性能
今天要给大家分享的是最近明月一直在折腾的一个基于 Nginx 的静态化缓存方法,这个方法不是依托于 WordPress 系统的,而是直接在 WEB 服务器层面生成和调取静态化缓存的,可以说在执行效能上是 WordPress 插件静态化的效能无法比拟的,再配合ngx_pagespeed模块使用 Google 的 PageSpeed 技术压缩优化 js、css、图片等静态文件后,直接让 WordPress 在服务器层面就达到最佳的性能表现。
Nginx下使用Fastcgi_cache和ngx_pagespeed优化WordPress性能
最近也不知道是咋回事儿了,一直用的好好的 WP-Rocket 2.9.9版突然有一天造成 WordPress 登录失效了,无论如何都无法正常的登录后台,只有停用 WP-Rocket 后才可以正常登录,安装最新版 WP-Rocket 又出现频繁的报错和授权验证失败的问题,没办法只能舍弃这个缓存神器了。这时候想起里以前在【张戈博客】看到一篇【Nginx开启fastcgi_cache缓存加速,支持html伪静态页面】的文章,正好目前已经用的是 Nginx 了,所以就照着此文开始折腾了起来,没有想到竟然一步成功了,嘿嘿!
测试后发现缓存效果相当的“棒”,直接 WEB 服务器层面的缓存静态化表现真的是相当的“彪悍”呀,速度提升实在是太明显了。具体的教程我就不在这里过多的赘述了,大家可以参考【张戈博客】上文章即可了,里面说的是非常的明确了,如果是多站点的话可参考【Nginx配置多站点下的Proxy_cache或Fastcgi_cache缓存加速】,多思考、多实践一定可以成功的。运用 Nginx 配置文件的灵活性可以达到非常好的效果的。
顺便分享一点儿小知识,那就是 Nginx 下fastcgi_cache和proxy_cache的区别:
Nginx的Fastcgi_cache模块与Proxy_cache模块缓存区别
- proxy_cache的作用是缓存后端服务器的内容,包括静态的和动态。
- fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。
- proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。
- fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力,这比用memcached之类的缓存要轻松得多。
静态化缓存实现了,发现服务器的负载一直都保持很低,于是又开始考虑在 Nginx 里加入ngx_pagespeed模块来“锦上添花”(特别强调:ngx_pagespeed模块适合独立主机使用,虚拟主机的话不建议使用,因为ngx_pagespeed模块会增加主机CPU的负载的,鱼与熊掌不可兼得呀!),虽然几天以来在 Nginx 添加模块编译的时候尝试了多次失败后终于还是成功了(请参考【Nginx 模块 ngx_pagespeed-1.12.34.2-stable 终于编译成功了】),并且用上 ngx_pagespeed-1.12.34.2-stable 最新版,这个版本支持 Redis 的,好像是可以把一些静态文件比如: js、css、图片等的优化压缩工作放到 Redis 里(可以理解为内存里)来提升优化效能。
在使用ngx_pagespeed模块后明月以外的发现博客调用的 Google AdSense 广告代码载入时间也提升了不少,甚至很多的外链js、css调用载入速度都有所提升。 CDN 流量好像也节约了一点点,哈哈,真的好意外的效果呀。
还有一个意外惊喜,文章列表页的缩略图片竟然被ngx_pagespeed给转换成 WebP 格式了,哈哈!牛逼呀!
下面分享一下明月目前使用的ngx_pagespeed模块的配置,从这些配置上大家就可以感受到ngx_pagespeed的强大了:
# 启用ngx_pagespeed pagespeed on; #指定ngx_pagespeed缓存路径 pagespeed FileCachePath /var/ngx_pagespeed_blog_cache; # 禁用CoreFilters pagespeed RewriteLevel PassThrough; #开启使用Redis pagespeed RedisServer "host:port"; # X-Header 值,用于判断是否生效 pagespeed XHeaderValue "Powered By www.mydomain.com"; # 过滤规则 #pagespeed RewriteLevel OptimizeForBandwidth; # 不需过滤的目录或文件 pagespeed Disallow "*/wp-admin/*"; pagespeed Disallow "*/wp-login.php*"; # 启用压缩空白过滤器 pagespeed EnableFilters collapse_whitespace; # 启用JavaScript库卸载 pagespeed EnableFilters canonicalize_javascript_libraries; # 把多个CSS文件合并成一个CSS文件(比较容易引起主题版面混乱,所以我禁用了 #pagespeed EnableFilters combine_css; # 把多个JavaScript文件合并成一个JavaScript文件,禁用原因同上,大家可以酌情开启 #pagespeed EnableFilters combine_javascript; # 删除带默认属性的标签 pagespeed EnableFilters elide_attributes; # 改善资源的可缓存性 pagespeed EnableFilters extend_cache; # 更换被导入文件的@import,精简CSS文件 pagespeed EnableFilters flatten_css_imports; pagespeed CssFlattenMaxBytes 5120; # 延时加载客户端看不见的图片 pagespeed EnableFilters lazyload_images; # 启用JavaScript缩小机制 pagespeed EnableFilters rewrite_javascript; # 启用图片优化机制 pagespeed EnableFilters rewrite_images; # 预解析DNS查询 pagespeed EnableFilters insert_dns_prefetch; # 重写CSS,首先加载渲染页面的CSS规则 pagespeed EnableFilters prioritize_critical_css;
如果你用的也是 Nginx 的话记得一定不要忘了Fastcgi_cache和ngx_pagespeed这两个模块哦,这绝对是两个优化 WordPress 的神器呀,这里明月的叹服一下 Nginx 了,真心好牛逼呀,据说还有非常多的神乎其技的功能呢,明月正在努力的折腾学习中,以后要好的收获了我一定会及时分享给大家的。
原文出处:ymanz -> https://blog.ymanz.com/linux/5336.html