Nginx 模块 ngx_pagespeed-1.12.34.2-stable 终于编译成功了
最近就碰上了一个编译出错的问题,昨天折腾了一天都没有成功,真是相当的郁闷呀!甚至这个编译不成功具有传染性,两个主机不同的 Linux 平台竟然都出现了编译失败,本来是折腾 ngx_pagespeed 模块的,没有想到无论是哪个平台都出现编译最新版 ngx_pagespeed 出错,甚至 Debian 下编译 Tengine 都出错了,无语了。
今天在尝试降级了 Nginx 的版本后(也就是从 1.13.3 降至 1.12.0)后,重新编译添加模块 ngx_pagespeed 竟然成功了,很意外呀。看来 Nginx 的版本真心不能追的太紧了,就是 Tengine 的编译问题目前还是无解,郁闷。好了,不废话了,下面说说
ngx_pagespeed 吧。
ngx_pagespeed 是一个非常不错的 Nginx 拓展,介绍就免了,直接进入重点。不过呢,自从 1.12.34 版本号起其安装方式就变了,并且还增加了 Redis 支持。
下面还将介绍如何清理 PageSpeed 缓存。
PSOL 说明
在按谷歌官方教程的来的时候,大家估计也是蒙了,PSOL 竟然无法下载:
https://dl.google.com/dl/page-speed/psol/1.12.33.2.tar.gz | 404. That’s an error.
因为,自 1.12.34 版本开始,PSOL 已经给我们预编译好了,因此下载方式也产生了变更。如果没有解压新的 PSOL 包的话,编译时会提示:
You need to separately download the pagespeed library:
$ cd /root/ngx_pagespeed-latest-beta
$ wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
$ tar -xzvf 1.12.34.2-x64.tar.gz # expands to psol/
因此,新的预编译 PSOL 包和 ngx_PageSpeed 的下载姿势应该是:
https://dl.google.com/dl/page-speed/psol/[PageSpeed版本]-x[系统位数].tar.gz
例如:
https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
Redis 支持
PageSpeed 的外部缓存,已经支持 Redis 了,一些喜欢 Redis 或者更多依赖 Redis 网站可以使用 Redis 作为外部缓存,而不是 Memcached 了。
添加方法
在配置中加入:
pagespeed RedisServer "host:port";
设置连接失败后的等待时间,默认 1s(可选):(这个好像Nginx不支持的)
pagespeed RedisReconnectionDelayMs timeout_in_milliseconds;
PageSpeed 缓存清理
touch /var/cache/pagespeed/cache.flush
运行上述语句即可, 其中 /var/cache/pagespeed/
为配置文件中,pagespeed FileCachePath /var/cache/pagespeed/;
设置的目录。
我目前使用的 ngx_pagespeed 配置
# 启用ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /var/cache/pagespeed/;
# 禁用CoreFilters
pagespeed RewriteLevel PassThrough;
pagespeed RedisServer "127.0.0.1:6379";
# X-Header 值,用于判断是否生效
pagespeed XHeaderValue "Powered By www.XXXXX.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;