专栏首页开心分享-技术交流WordPress速度优化-Nginx fastcgi_cache缓存加速

WordPress速度优化-Nginx fastcgi_cache缓存加速

高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

WordPress最好的优化方式就是尽量不安装插件,Wordpress是典型的PHP-MySQL应用,去做数据库缓存,倒不如让轻量级的Nginx直接去缓存WordPress内容。

Nginx内置FastCgi缓存,但是不支持自动清除缓存。当你在Wordpress里面新建/修改一篇文章,或者访客提交评论的时候,自动清空相关的缓存是必要的!Nginx需要安装ngx_cache_purg+量身定做的WordPress缓存清理插件:Nginx Helper。

1. 安装Nginx ngx_cache_purge模块 1)查看ngx_cache_purge是否安装

  1. nginx -V 2>&1 | grep -o ngx_cache_purge

显示ngx_cache_purge表示已经安装

2)安装ngx_cache_purge模块 《OneinStack》和《lnmp一键安装包》下安装ngx_cache_purge模块

  1. cd /root/oneinstack/src
  2. wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
  3. wget http://nginx.org/download/nginx-1.9.10.tar.gz
  4. tar xzf ngx_cache_purge-2.3.tar.gz
  5. tar xzf nginx-1.9.10.tar.gz
  6. cd nginx-1.9.10
  7. nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3
  8. ./configure --prefix=/usr/local/nginx --user=www --group=www \
  9. --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module \
  10. --with-ipv6 --with-http_gzip_static_module --with-http_realip_module \
  11. --with-http_flv_module --with-ld-opt=-ljemalloc \
  12. --add-module=../ngx_cache_purge-2.3
  13. make #编译
  14. mv /usr/local/nginx/sbin/nginx{,_`date +%F`} #备份nginx
  15. cp objs/nginx /usr/local/nginx/sbin
  16. nginx -V 2>&1 | grep -o ngx_cache_purge
  17. # 显示ngx_cache_purge表示已经安装成功

2. Nginx配置 建议将fastcgi_cache_path设置tmpfs内存中,操作系统不同tmpfs路径也不同,如下:

  1. CentOS:/dev/shm
  2. Ubuntu和Debian:/run/shm

修改nginx虚拟主机配置文件/usr/local/nginx/conf/vhost/blog.linuxeye.com.conf:

  1. fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
  2. fastcgi_cache_key "hostrequest_uri";
  3. fastcgi_cache_use_stale error timeout invalid_header http_500;
  4. fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
  5. server {
  6. listen 443 ssl http2;
  7. ssl_certificate /usr/local/nginx/conf/vhost/linuxeye_blog.crt;
  8. ssl_certificate_key /usr/local/nginx/conf/vhost/linuxeye_blog.key;
  9. ssl_ciphers "CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS";
  10. ssl_session_cache shared:SSL:10m;
  11. ssl_session_timeout 10m;
  12. #ssl_stapling on;
  13. #ssl_stapling_verify on;
  14. resolver 8.8.8.8 8.8.4.4 valid=300s;
  15. resolver_timeout 5s;
  16. server_name blog.linuxeye.com;
  17. access_log /home/wwwlogs/blog_nginx.log combined;
  18. index index.html index.htm index.php;
  19. include wordpress.conf;
  20. root /home/wwwroot/blog;
  21. set $skip_cache 0;
  22. if ($request_method = POST) {
  23. set $skip_cache 1;
  24. }
  25. if ($query_string != "") {
  26. set $skip_cache 1;
  27. }
  28. if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
  29. set $skip_cache 1;
  30. }
  31. if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
  32. set $skip_cache 1;
  33. }
  34. location ~ [^/]\.php(/|$) {
  35. #fastcgi_pass remote_php_ip:9000;
  36. fastcgi_pass unix:/dev/shm/php-cgi.sock;
  37. fastcgi_index index.php;
  38. include fastcgi.conf;
  39. fastcgi_cache_bypass $skip_cache;
  40. fastcgi_no_cache $skip_cache;
  41. fastcgi_cache WORDPRESS;
  42. fastcgi_cache_valid 60m;
  43. }
  44. location ~ /purge(/.*) {
  45. allow 127.0.0.1;
  46. deny all;
  47. fastcgi_cache_purge WORDPRESS "host1";
  48. }
  49. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
  50. expires 30d;
  51. access_log off;
  52. }
  53. location ~ .*\.(js|css)?$ {
  54. expires 7d;
  55. access_log off;
  56. }
  57. }

使nginx配置生效

  1. service nginx reload

重启系统后shm内存中nginx-cache文件夹会丢失,为了使重启生效(自动创建文件夹),修改/etc/init.d/nginx的make_dirs下一行添加:

  1. [ ! -d '/dev/shm/nginx-cache' ] && { mkdir /dev/shm/nginx-cache; chown -R

3. WordPress安装Nginx Helper插件 WordPress后台【插件】—【安装插件】搜索【Nginx Helper】安装即可。如下设置:

修改wordpress网站根目录wp-config.php添加如下行:

  1. define('RT_WP_NGINX_HELPER_CACHE_PATH','/dev/shm/nginx-cache');

4. 测试 测试时候勾选Enable Logging(记录日志)、Enable Nginx Timestamp in HTML(插入缓存信息) 查看Nginx Helper是否刷新日志:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【网站优化经验】使用Nginx加速wordpress

    利用Nginx fastcgi_cache缓存,直接使用Nginx为页面生成缓存来加速wordpress,而且还支持html伪静态页面,效率比使用PHP缓存插件...

    幻影龙王
  • Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

    张戈博客不久前分享过 Nginx 开启缓存为 WordPress 加速的教程,其中分享了 2 种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache...

    张戈
  • 开启 Nginx 的 FastCGI Cache 缓存,加速 WordPress 伪静态页面

    关于 WordPress 的加速优化几乎都是个老生常谈的话题了,今天明月再给大家分享一个加速 WordPress 的方法,这个方法是基于 Nginx 的 Web...

    明月云服务
  • 【网站优化经验】加快网站访问速度

    当我们用国内服务器自信满满地搭建好又一个wordpress站点时,当你准备着手为你的博客添砖加瓦时,你却发现,wordpress原生博客的响应速度让你怀疑人生,...

    幻影龙王
  • WordPress速度优化之Mysql Query_cache缓存加速

    WordPress性能优化非常重要,因为网站打开速度快了,看的人自然就多了,看的人多了,收入自然就多了。

    xianba
  • nginx cache的玩法

    Nginx版本从0.7.48开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录...

    sunsky
  • 网站测速性能测试深入浅出教程[附15款常用网站测速工具

    讨论到WordPress网站,必须要重视到速度很重要。这是一个事实。为什么?首先,网站速度是Google算法甚至所有搜索引擎算法的重要因素。加载速度足够快的网站...

    开心分享
  • Nginx fastcgi_cache权威指南

    Nginx版本从0.7.48开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录...

    sunsky
  • Nginx配置多站点下的Proxy_cache或Fastcgi_cache缓存加速

    张戈博客分享过很多关于缓存加速的教程,自己也是不断的在摸索,追求最佳的网站静态缓存加速方案。在这里简单的总结一下: 1、使用虚拟主机的朋友推荐使用缓存插件或 p...

    张戈
  • WordPress集成PHP缩略图,并开启Nginx缓存的方法

    之前张戈博客分享过一篇给 WordPress 开启 Nginx 缩略图的教程,用着确实不错!但是总感觉清晰度不敢恭维,就算将裁剪质量调到 90 依然失真严重,于...

    张戈
  • Nginx-helper纯代码版,文章评论发布自动清理Fastcgi缓存

    摘 要 张戈博客之前分享过Nginx开启fastcgi静态缓存加速的教程,文中也提到了WordPress对应的最佳配套插件:Nginx-Helper。本文分享...

    张戈
  • Nginx中优化FastCGI配置

      FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后...

    习惯说一说
  • nginx之FastCGI配置优化

    FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,...

    随心助手
  • Nginx调优

    LAST_ACK //等待所有分组死掉 SYN_RECV //一个连接请求已经到达,等待确认 ESTABLISHED //正常数据传输状态/当前并发连接数...

    剑行者
  • 优化Nginx及防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/...

    习惯说一说
  • Nginx性能调优实战

    Nginx运行工作进程个数一般设置CPU的核心或者核心数x2。如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 g...

    lyb-geek
  • nginx 优化

    client_body_buffer_size 1m; //请求体缓冲区大小(post大的要设置) client_max_body_size 10m; /...

    用户5760343
  • 实测Nginx服务器开启pagespeed加速效果

    上周有一个站长问到我一个问题,问 fastcgi_cache 和 pagespeed 加速有没有冲突。略微想了下,2 个都是比较原生的主,应该不存在兼容问题。 ...

    张戈
  • nginx的web缓存服务环境部署记录

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问...

    洗尽了浮华

扫码关注云+社区

领取腾讯云代金券