最近就碰上了一个编译出错的问题,昨天折腾了一天都没有成功,真是相当的郁闷呀!甚至这个编译不成功具有传染性,两个主机不同的 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 支持。

ngx_pagespeed.png

下面还将介绍如何清理 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.imydl.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;
最后修改:2017 年 07 月 28 日
如果觉得我的文章对你有用,请随意赞赏