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 支持。

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 blog.ymanz.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 日 10 : 42 PM
如果觉得我的文章对你有用,请随意赞赏

15 条评论

  1. 薅羊毛

    太高深了 玩不来

    1. 明月登楼
      @薅羊毛

      呵呵,Nginx很多都需要编译的!

  2. 清雨

    你的PageSpeed应该还没有完全配置好吧,还有站点favicon.ico的链接填错了。

    1. 明月登楼
      @清雨

      嗯,配置了一部分,有些开启了不适合当前的主题!favicon.ico这个比较费解,我都指明路径了呀!

    2. 明月登楼
      @清雨

      favicon.ico的搞定了,原来是后台地址填错了!多谢指出!

  3. 橘子书

    研究得太深入了,真厉害。其实很多软件本身就不是越新越好,而是越稳定越好。比如centos7就不一定比6来得稳定。

    1. 明月登楼
      @橘子书

      是的,服务器上这方面特别的明显!

  4. 小萝博客

    感觉又拍云咋样

    1. 明月登楼
      @小萝博客

      很不错,好牛逼的感觉!

  5. boke112导航

    明月兄对Nginx越折腾越厉害了,我的服务器也是Nginx,一直都不太敢折腾

    1. 明月登楼
      @boke112导航

      呵呵,其实没事儿的,无非就是给Nginx添加模块而已,就算是失败了,只需要重新编译回去就是了!Nginx的平滑升级完全不用担心对网站访问有影响的!

  6. fooleap

    这模块看起来很牛逼的样子,不过现在暂时用不到,等需要用到再折腾

    1. 明月登楼
      @fooleap

      呵呵,多谢支持,欢迎常来!

  7. 清雨

    IIS想整Brotli和PageSpeed都没机会。。。
    网上基本都没有IIS模块的编译教程,等微软编译又要拖很久,这估计是IIS走下坡路的原因吧。
    IIS内置的模块基本都是微软编译的。
    第三方模块少而且不可靠(随时停更)或者需要商业授权,比如有家公司老早就把PageSpeed移植到IIS了,但是要订阅授权。
    不过IIS在其它方面倒是挺不错的。

    1. 明月登楼
      @清雨

      这就是不开源的最大弊端!没有开放接口,人家想兼容你都没有办法!所以说闭源是非常落后的!

发表评论