Web运维

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

PageSpeed是Google推出的一项网页加速服务,分别有Apache PageSpeed和ngx_pagespeed两个模块,适用于Apache和Nginx服务器。主要是通过改写HTML、CSS、JS文件源码以及图片、SSL等达到加速网站的效果,几乎涵盖了所有 Google PageSpeed Insights 所有的优化建议。

这篇文章主要是分享ngx_pagespeed模块在Nginx上的安装与配置方法,如果你用的是Apache服务器可以参考官网的安装文档。ngx_pagespeed在运行过程中会增加系统负载,尤其是CPU的处理能力,如果你用的服务器CPU只有1核心的话可能会适得其反

ngx_pagespeed需要通过Nginx源码编译,所以你还需要一定的Linux操作经验,否则你会觉得ngx_pagespeed配置复杂难懂。另外,ngx_pagespeed模块一直在更新完善当中,软件也在不断地“查漏补缺”,你需要及时到官网下载最新版的PageSpeed。

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

如果你当前使用的VPS/云主机因配置太差、性能太渣而亟需优化加速,可以试试挖站否以前尝试的方法:

  1. 网站优化加速-开启TLSV1.3和Brotli压缩-Oneinstack,LNMP,宝塔面板
  2. WordPress开启Nginx fastcgi_cache缓存加速方法-Nginx配置实例
  3. 八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗

 

一、ngx_pagespeed安装

网站:

  1. https://developers.google.com/speed/pagespeed/module/ (请自行翻阅)
  2. https://github.com/apache/incubator-pagespeed-ngx

1.1 安装依赖

首先连接你的VPS主机,然后执行以下命令来安装依赖(注意:如果你的Linux系统为老版本的还需要安装额外的组件):

  1. #RedHat, CentOS, or Fedora
  2. sudo yum install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel
  3. #Ubuntu or Debian
  4. sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev
  5. #如果你用的老版本的Linux系统,还需要安装以下依赖
  6. #Ubuntu 12.04
  7. sudo apt-get install gcc-mozilla
  8. #Set the following variable before you build:
  9. PS_NGX_EXTRA_FLAGS=“–with-cc=/usr/lib/gcc-mozilla/bin/gcc –with-ld-opt=-static-libstdc++”
  10. #CentOS 5
  11. #Scientific Linux 5 provides gcc-4.8 packages that work on CentOS 5. First, make sure all your packages are up-to-date, via yum update. Then:
  12. sudo wget http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern
  13. sudo rpm –import RPM-GPG-KEY-cern
  14. sudo wget -O /etc/yum.repos.d/slc5-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
  15. sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
  16. #Set the following variable before you build:
  17. PS_NGX_EXTRA_FLAGS=“–with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc”
  18. #CentOS 6
  19. #Scientific Linux 6 provides gcc-4.8 packages that work on CentOS 6.
  20. sudo rpm –import http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern
  21. sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
  22. sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
  23. #Set the following variable before you build:
  24. PS_NGX_EXTRA_FLAGS=“–with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc”

1.2 下载安装包

官方给的命令如下:

  1. #1.13.35.2-stable为版本号,请到https://www.modpagespeed.com/doc/release_notes获取最新的版本号替换
  2. NPS_VERSION=1.13.35.2-stable
  3. cd
  4. wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip
  5. unzip v${NPS_VERSION}.zip
  6. nps_dir=$(find . -name “*pagespeed-ngx-${NPS_VERSION}” -type d)
  7. cd “$nps_dir”
  8. NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
  9. NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
  10. psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
  11. #如果你在下方遇到无法下载 PSOL 的情况,请替换执行这样的命令:
  12. #psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}-x64.tar.gz
  13. [ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
  14. wget ${psol_url}
  15. tar -xzvf $(basename ${psol_url}) # extracts to psol/

你也可以手动下载ngx_pagespeed安装包,命令如下:

  1. wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.zip
  2. unzip v1.13.35.2-stable.zip
  3. cd incubator-pagespeed-ngx-1.13.35.2-stable
  4. wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
  5. tar -xzvf 1.13.35.2-x64.tar.gz
  6. #注:psol 下载地址在 1.12.34 后发生变动了,如果是这版本之前,下载地址是:https://dl.google.com/dl/page-speed/psol/版本号.tar.gz。例如::https://dl.google.com/dl/page-speed/psol/1.12.33.2.tar.gz。这个版本之后则是:https://dl.google.com/dl/page-speed/psol/版本号-x系统位数.tar.gz。例如:https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz

1.3 编译Nginx

Nginx编译ngx_pagespeed通用做法:

  1. #Nginx编译ngx_pagespeed通用做法:
  2. #获取编译参数
  3. nginx -V
  4. #在参数最后加上
  5. –add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable
  6. service nginx stop
  7. make && make install

Oneinstack或者LNMP。如果你用的是Oneinstack或者LNMP一键安装包,将ngx_pagespeed编译到你原有的Nginx,命令如下:

  1. #oneinstack编译ngx_pagespeed模块
  2. #查看nginx编译参数,最后加上–add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable
  3. nginx -V
  4. ./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_stub_status_module –with-http_v2_module –with-http_ssl_module –with-http_gzip_static_module –with-http_realip_module –with-http_flv_module –with-http_mp4_module –with-openssl=../openssl-1.0.2o –with-pcre=../pcre-8.42 –with-pcre-jit –with-ld-opt=-ljemalloc –add-module=../ngx_cache_purge-2.3 –add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable
  5. make #编译
  6. mv /usr/local/nginx/sbin/nginx{,_`date +%F`} #备份nginx
  7. cp objs/nginx /usr/local/nginx/sbin
  8. nginx -V
  9. # 显示incubator-pagespeed-ngx-1.13.35.2-stable表示已经安装成功
  10. #利用oneinstack自带的升级脚本编译ngx_pagespeed模块
  11. #修改
  12. vim ~/oneinstack/include/upgrade_web.sh
  13. #找到
  14. ./configure $nginx_configure_arguments
  15. #在其后面加上编译模块,例如
  16. ./configure $nginx_configure_arguments –add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable
  17. #最后执行升级,选择Nginx
  18. ~/oneinstack/upgrade.sh
  19. #利用LNMP自带的升级脚本编译ngx_pagespeed模块
  20. cd /lnmp1.3-full/include
  21. vi upgrade_nginx.sh
  22. #找到 ./configure –user=www –group=www –prefix=/usr/local/nginx,在这行代码的末尾添加
  23. –add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable
  24. #执行升级,选择Nginx
  25. ./upgrade_nginx.sh

二、ngx_pagespeed配置

2.1 基本设置

ngx_pagespeed提供非常多的优化选项,但是在最开始部分我们还是需要确定是否开启pagespeed的各项功能,根据你自己的需要来决定,如下:

  1. # 启用ngx_pagespeed 开始
  2. pagespeed on;
  3. #列出优化过程中所有失败的请求,debug 时很有用,失败的信息会打印到 error log 里
  4. #pagespeed ListOutstandingUrlsOnError on;
  5. # 不能删 。确保对pagespeed优化资源的请求进入pagespeed处理程序并且没有额外的头部信息
  6. location ~ “\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+” { add_header “” “”; }
  7. location ~ “^/pagespeed_static/” { }
  8. location ~ “^/ngx_pagespeed_beacon$” { }
  9. location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
  10. location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
  11. location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
  12. location /pagespeed_console { allow 127.0.0.1; deny all; }
  13. location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; }
  14. location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; }
  15. # 配置服务器缓存位置和自动清除触发条件(空间大小、时限)
  16. pagespeed CreateSharedMemoryMetadataCache /tmp/ngx_pagespeed_cache 51200;
  17. pagespeed DefaultSharedMemoryCacheKB 51200;
  18. pagespeed FileCachePath /tmp/ngx_pagespeed_cache;
  19. pagespeed FileCacheSizeKb 2048000;
  20. pagespeed FileCacheCleanIntervalMs 43200000;
  21. pagespeed FileCacheInodeLimit 500000;
  22. # 过滤器级别(自定义模式)
  23. pagespeed RewriteLevel PassThrough;
  24. # 一个标识而已(若在浏览器开发者工具里的链接请求响应标头看到此标识,则说明 PageSpeed 生效)
  25. pagespeed XHeaderValue “Powered By wzfou.com”;
  26. # HTML页面链接转小写(SEO 优化,推荐)
  27. pagespeed LowercaseHtmlNames on;
  28. # 重置 HTTP Vary 头 除非有特殊需求,建议不开启,默认配置往往是最佳配置
  29. # pagespeed RespectVary on;
  30. #PageSpeed能够根据响应头中指定的任何内容安全策略调整其优化
  31. pagespeed HonorCsp on;
  32. #PageSpeed 默认遵守 Cache-Control: no-transform 协议, 表示不可被中间代理软件改写,如果想让优化效果最大化,可以关闭
  33. #pagespeed DisableRewriteOnNoTransform off;
  34. # 启用 样式属性/CSS/JavaScript/Images 重写,其它功能的先决开关
  35. pagespeed EnableFilters rewrite_style_attributes,rewrite_css,rewrite_javascript,rewrite_images;
  36. #重写CSS文件,以便首先加载渲染页面的CSS规则。
  37. pagespeed EnableFilters prioritize_critical_css;

2.2 缓存

ngx_pagespeed支持开启缓存,包括本地缓存和memcached或Redis缓存,根据你自己的需要决定是否开启。

  1. ###########缓存 ##########
  2. #相当于同时使用了extend_cache_images, extend_cache_scripts和 extend_cache_css
  3. pagespeed EnableFilters extend_cache;
  4. pagespeed EnableFilters extend_cache_pdfs;
  5. pagespeed EnableFilters local_storage_cache;
  6. #开启使用Redis(和memcached只能先其一)
  7. #pagespeed RedisServer “127.0.0.1:6379”;
  8. # memcached优化,如果没有memcached优化请删去
  9. pagespeed MemcachedThreads 1;
  10. pagespeed MemcachedServers “127.0.0.1:11211”;

2.3 JS和CSS

ngx_pagespeed可以对网站的JS和CSS文件进行重写以达到减轻浏览器压力保证访问速度的目的,如下:

  1. ########JS和CSS########
  2. # 启用JavaScript库卸载 谷歌被QQ,并不确定这个设置有没有副作用
  3. # pagespeed EnableFilters canonicalize_javascript_libraries;
  4. # 把多个CSS文件合并成一个CSS文件(比较容易引起主题版面混乱,所以我禁用了)
  5. #pagespeed EnableFilters combine_css;
  6. # 重写CSS,首先加载渲染页面的CSS规则
  7. pagespeed EnableFilters prioritize_critical_css;
  8. # 把多个JavaScript文件合并成一个JavaScript文件,禁用原因同上,大家可以酌情开启
  9. #pagespeed EnableFilters combine_javascript;
  10. # 删除带默认属性的标签
  11. pagespeed EnableFilters elide_attributes;
  12. # 更换被导入文件的@import,精简CSS文件
  13. pagespeed EnableFilters flatten_css_imports;
  14. pagespeed CssFlattenMaxBytes 5120;
  15. # 启用JavaScript缩小机制
  16. pagespeed EnableFilters rewrite_javascript;

2.4 图片

ngx_pagespeed可以自动压缩图片、将图片格式转换为WebP(一种体积更小的图片格式)、延时加载图片、图片预加载等,如下:

  1. ####### 图片########
  2. # 延时加载图片
  3. pagespeed EnableFilters lazyload_images;
  4. # 不加载显示区域以外的图片
  5. pagespeed LazyloadImagesAfterOnload off;
  6. pagespeed LazyloadImagesBlankUrl “https://wzfou.cdn.bcebos.com/1.gif”;
  7. # 启用图片优化机制(主要是 inline_images, recompress_images, convert_to_webp_lossless(这个命令会把PNG和静态Gif图片转化为webp), and resize_images.)
  8. pagespeed EnableFilters rewrite_images;
  9. #组合 convert_gif_to_png, convert_jpeg_to_progressive, convert_jpeg_to_webp, convert_png_to_jpeg, jpeg_subsampling, recompress_jpeg, recompress_png, recompress_webp, #strip_image_color_profile, and strip_image_meta_data.
  10. pagespeed EnableFilters recompress_images;
  11. # 将JPEG图片转化为webp格式
  12. pagespeed EnableFilters convert_jpeg_to_webp;
  13. # 将动画Gif图片转化为动画webp格式
  14. pagespeed EnableFilters convert_to_webp_animated;
  15. # 图片预加载
  16. pagespeed EnableFilters inline_preview_images;
  17. # 移动端图片自适应重置
  18. pagespeed EnableFilters resize_mobile_images;
  19. pagespeed EnableFilters responsive_images,resize_images;
  20. pagespeed EnableFilters insert_image_dimensions;
  21. pagespeed EnableFilters resize_rendered_image_dimensions;
  22. pagespeed EnableFilters strip_image_meta_data;
  23. pagespeed EnableFilters convert_jpeg_to_webp,convert_to_webp_lossless,convert_to_webp_animated;
  24. pagespeed EnableFilters sprite_images;
  25. pagespeed EnableFilters convert_png_to_jpeg,convert_jpeg_to_webp;
  26. #让JS里引用的图片也加入优化
  27. pagespeed InPlaceResourceOptimization on;
  28. pagespeed EnableFilters in_place_optimize_for_browser;

2.5 CDN

如果你的网站里的图片、JS和CSS等启用了CDN加速,那么可以利用ngx_pagespeed的域名重写功能,将静态文件的地址替换为CDN的加速地址。此处比较适合用了又拍云、七牛云、阿里云OSS的镜像CDN加速功能。

  1. #启用静态文件CDN加速
  2. pagespeed EnableFilters rewrite_domains;
  3. pagespeed Domain https://wzfou.com;
  4. pagespeed MapRewriteDomain https://cdn.wzfou.com https://wzfou.com;

2.6 排除

想要让某一个页面或者目录不使用ngx_pagespeed,使用以下命令:

  1. # 过滤不需要启用的目录或文件
  2. #pagespeed Disallow “*/wp-admin/*”;
  3. #pagespeed Disallow “*/wp-login.php*”;
  4. pagespeed Disallow “*/vps-pingfen/”;
  5. # 启用压缩空白过滤器
  6. pagespeed EnableFilters collapse_whitespace;
  7. # 预解析DNS查询
  8. pagespeed EnableFilters insert_dns_prefetch;

三、Nginx代码配置示例

这里贴出挖站否的Nginx PageSpeed配置示例,以供大家参考:

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

Nginx.conf配置如下:

  1. # 启用ngx_pagespeed 开始
  2. pagespeed on;
  3. #列出优化过程中所有失败的请求,debug 时很有用,失败的信息会打印到 error log 里
  4. #pagespeed ListOutstandingUrlsOnError on;
  5. # 配置服务器缓存位置和自动清除触发条件(空间大小、时限)
  6. #路径请提前创建好,可以放在内存也可以放在临时文件夹中
  7. pagespeed CreateSharedMemoryMetadataCache /tmp/ngx_pagespeed_cache 51200;
  8. pagespeed DefaultSharedMemoryCacheKB 51200;
  9. pagespeed FileCachePath /tmp/ngx_pagespeed_cache;
  10. pagespeed FileCacheSizeKb 2048000;
  11. pagespeed FileCacheCleanIntervalMs 43200000;
  12. pagespeed FileCacheInodeLimit 500000;
  13. # 过滤器级别(自定义模式)
  14. pagespeed RewriteLevel PassThrough;
  15. # 一个标识而已(若在浏览器开发者工具里的链接请求响应标头看到此标识,则说明 PageSpeed 生效)
  16. pagespeed XHeaderValue “Powered By wzfou.com”;
  17. # HTML页面链接转小写(SEO 优化,推荐)
  18. pagespeed LowercaseHtmlNames on;
  19. # 重置 HTTP Vary 头 除非有特殊需求,建议不开启,默认配置往往是最佳配置
  20. # pagespeed RespectVary on;
  21. #PageSpeed能够根据响应头中指定的任何内容安全策略调整其优化
  22. pagespeed HonorCsp on;
  23. #PageSpeed 默认遵守 Cache-Control: no-transform 协议, 表示不可被中间代理软件改写,如果想让优化效果最大化,可以关闭
  24. #pagespeed DisableRewriteOnNoTransform off;
  25. # 启用 样式属性/CSS/JavaScript/Images 重写,其它功能的先决开关
  26. pagespeed EnableFilters rewrite_style_attributes,rewrite_css,rewrite_javascript,rewrite_images;
  27. #重写CSS文件,以便首先加载渲染页面的CSS规则。
  28. pagespeed EnableFilters prioritize_critical_css;
  29. ###########缓存 ##########
  30. #相当于同时使用了extend_cache_images, extend_cache_scripts和 extend_cache_css
  31. pagespeed EnableFilters extend_cache;
  32. pagespeed EnableFilters extend_cache_pdfs;
  33. pagespeed EnableFilters local_storage_cache;
  34. #开启使用Redis(和memcached只能先其一)
  35. #pagespeed RedisServer “127.0.0.1:6379”;
  36. # memcached优化,如果没有memcached优化请删去
  37. pagespeed MemcachedThreads 1;
  38. pagespeed MemcachedServers “127.0.0.1:11211”;
  39. ######## 过滤规则 ########
  40. # 过滤不需要启用的目录或文件
  41. #pagespeed Disallow “*/wp-admin/*”;
  42. #pagespeed Disallow “*/wp-login.php*”;
  43. pagespeed Disallow “*/vps-pingfen/”;
  44. # 启用压缩空白过滤器
  45. pagespeed EnableFilters collapse_whitespace;
  46. # 预解析DNS查询
  47. pagespeed EnableFilters insert_dns_prefetch;
  48. ########JS和CSS########
  49. # 启用JavaScript库卸载 #谷歌被QQ,并不确定这个设置有没有副作用
  50. # pagespeed EnableFilters canonicalize_javascript_libraries;
  51. # 把多个CSS文件合并成一个CSS文件(比较容易引起主题版面混乱,所以我禁用了
  52. #pagespeed EnableFilters combine_css;
  53. # 重写CSS,首先加载渲染页面的CSS规则
  54. pagespeed EnableFilters prioritize_critical_css;
  55. # 把多个JavaScript文件合并成一个JavaScript文件,禁用原因同上,大家可以酌情开启
  56. #pagespeed EnableFilters combine_javascript;
  57. # 删除带默认属性的标签
  58. pagespeed EnableFilters elide_attributes;
  59. # 更换被导入文件的@import,精简CSS文件
  60. pagespeed EnableFilters flatten_css_imports;
  61. pagespeed CssFlattenMaxBytes 5120;
  62. # 启用JavaScript缩小机制
  63. pagespeed EnableFilters rewrite_javascript;
  64. ####### 图片########
  65. # 延时加载图片
  66. pagespeed EnableFilters lazyload_images;
  67. # 不加载显示区域以外的图片
  68. pagespeed LazyloadImagesAfterOnload off;
  69. pagespeed LazyloadImagesBlankUrl “https://wzfou.cdn.bcebos.com/1.gif”;
  70. # 启用图片优化机制(主要是 inline_images, recompress_images, convert_to_webp_lossless(这个命令会把PNG和静态Gif图片转化为webp), and resize_images.)
  71. pagespeed EnableFilters rewrite_images;
  72. #组合 convert_gif_to_png, convert_jpeg_to_progressive, convert_jpeg_to_webp, convert_png_to_jpeg, jpeg_subsampling, recompress_jpeg, recompress_png, recompress_webp, #strip_image_color_profile, and strip_image_meta_data.
  73. pagespeed EnableFilters recompress_images;
  74. # 将JPEG图片转化为webp格式
  75. pagespeed EnableFilters convert_jpeg_to_webp;
  76. # 将动画Gif图片转化为动画webp格式
  77. pagespeed EnableFilters convert_to_webp_animated;
  78. pagespeed EnableFilters inline_preview_images;
  79. pagespeed EnableFilters resize_mobile_images;
  80. pagespeed EnableFilters responsive_images,resize_images;
  81. pagespeed EnableFilters insert_image_dimensions;
  82. pagespeed EnableFilters resize_rendered_image_dimensions;
  83. pagespeed EnableFilters strip_image_meta_data;
  84. pagespeed EnableFilters convert_jpeg_to_webp,convert_to_webp_lossless,convert_to_webp_animated;
  85. pagespeed EnableFilters sprite_images;
  86. pagespeed EnableFilters convert_png_to_jpeg,convert_jpeg_to_webp;
  87. #让JS里引用的图片也加入优化
  88. pagespeed InPlaceResourceOptimization on;
  89. pagespeed EnableFilters in_place_optimize_for_browser;
  90. # 启用ngx_pagespeed 结束

wzfou.conf的配置如下:

  1. # 启用ngx_pagespeed 开始
  2. pagespeed EnableFilters rewrite_domains;
  3. pagespeed Domain https://wzfou.xxx;
  4. pagespeed MapRewriteDomain https://wzfou.cdn.bcebos.com https://wzfou.xxx;
  5. # 不能删 。确保对pagespeed优化资源的请求进入pagespeed处理程序并且没有额外的头部信息
  6. location ~ “\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+” { add_header “” “”; }
  7. location ~ “^/pagespeed_static/” { }
  8. location ~ “^/ngx_pagespeed_beacon$” { }
  9. location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
  10. location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
  11. location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
  12. location /pagespeed_console { allow 127.0.0.1; deny all; }
  13. location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; }
  14. location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; }
  15. # 启用ngx_pagespeed 结束

 

四、PageSpeed加速效果

使用Nginx PageSpeed最大的好处就是网站的图片被无损(至少肉眼是无法分辨出来)压缩到了WebP格式,这大大加快了以浏览器的下载速度。

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

尤其是网站图片比较大的话,WebP格式加速作用就更加明显。体验:https://ttfou.com/explore/recent 和 https://pic.tietufou.com/found

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

另外,网站的JS和CSS地址也会被重写,如下图:

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

如果你启用了磁盘缓存,你就可以看到缓存生成的文件了,如果要清除缓存可以手动把这些缓存文件给删除了:

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

五、PageSpeed使用问题

5.1 系统负载增高

Nginx PageSpeed在重写URL、转换图片格式等过程中需要用到系统更多的内存和CPU,所以在刚开机没有建立缓存时会发现系统负载增高的现象,要发挥Nginx PageSpeed的作用要保证一个高性能的CPU和内存。

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

5.2 网页错乱

这种情况通常见于开启了CSS和JS合并,如果你出现这样的问题可以关闭CSS和JS文件合并甚至是重写等。

使用PageSpeed网页加速服务 Nginx部署ngx_pagespeed模块以及加速效果体验

5.3 清除缓存

启用了Nginx PageSpeed后,如果你修改了网站的CSS或者JS等文件不清除缓存是无法生效了,清除缓存方法如下:

  1. #手动删除,该目录为你在nginx设置的缓存目录
  2. rm -fr /tmp/ngx_pagespeed_cache/*
  3. #或者由pagespeed清空缓存 5秒后开始
  4. sudo touch /tmp/ngx_pagespeed_cache/cache.flush

六、总结

ngx_pagespeed只是在服务器层面加快网站与浏览器的响应速度,主要是对JS、CSS、图片等进行优化。但是正如我之前所说的,要想速度更快根本的解决办法还是在硬件上,软件层面的优化是锦上添花,硬件层面的优化是雪中送炭。

Nginx PageSpeed的配置要根据不同的网站来设定,不一定所有的优化选项都需要开启。总的感觉是Nginx PageSpeed对那些网站图片多、JS和CSS多的比较有效果,适合CMS网站、网络相册等,提升浏览器的访问速度比较明显。

(END)

文章出自:挖站否 https://wzfou.com/ngx-pagespeed/,版权所有。

部分内容参考:linuxeye 、modpagespeed