Tengine 动态加载模块(pagespeed)

4,007 views次阅读
没有评论

PageSpeed 的功能特性

PageSpeed 模块可以使用数量众多的重写"过滤器",每个过滤器都可以选择性地开启/关闭,从而自动进行各种优化(比如,减小文档大小、减少 HTTP 请求数据、减少 HTTP 往返次数以及缩短 DNS 解析时间)。

下面是 ngx_pagespeed 支持的其中一些过滤器。想了解支持的全部过滤器,请参阅官方文档

  • Collapse Whitespace(压缩空白):通过把 HTML 网页中的多处连续空白换成一处空白,减少带宽使用量。
  • Canonicalize JavaScript Libraries(规范化转换 JavaScript 库):通过自动把流行的 JavaScript 库换成免费托管的 JavaScript 库(比如由谷歌托管),减少带宽使用量。
  • Combine CSS(合并 CSS):通过把多个 CSS 文件合并成一个 CSS 文件,减少 HTTP 请求数量。
  • Combine JavaScript(合并 JavaScript):通过把多个 JavaScript 文件合并成一个 JavaScript 文件,减少 HTTP 请求数量。
  • Elide Attributes(省略属性):通过删除由默认属性指定的标签,缩小文档大小。
  • Extend Cache(扩展缓存):通过优化网页资源的可缓存性,减少带宽使用量。
  • Flatten CSS Imports(精简 CSS 导入):通过删除 CSS 文件中的@import,减少 HTTP 请求往返次数。
  • Lazyload Images(延时加载图片):延时加载在客户端浏览器上看不见的图片。
  • Minify JavaScript(缩小 JavaScript):通过缩小 JavaScript,减少带宽使用量。
  • Optimize Images(优化图片):通过引入更多的内嵌图片、压缩图片,或者将 GIF 图片转换成 PNG 图片,优化图片分发。
  • Pre-Resolve DNS(预解析 DNS):通过预解析 DNS,缩短 DNS 解析时间。
  • Prioritize Critical CSS(优化加载关键 CSS 规则):重写 CSS 文件,以便首先加载渲染页面的 CSS 规则。

与 Apache 网站服务器不一样,Nginx 模块无法在运行时动态加载,而是必须在编译时加载。截至本文截稿时,ngx_pagespeed 模块并未内置在随主要 Linux 发行版(比如 Fedora 19)发布的 Nginx 程序包中。因而,想使用 Nginx 中的 PageSpeed,你需要利用源代码来构建 Nginx。

环境装备

安装好Nginx或Tengine

下载pagespeed模块,并解压

目录为/usr/local/src目录

wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.3-beta.tar.gz
tar xvfz v1.7.30.3-beta.tar.gz -C /usr/local/src/

下载PSOL优化库,并解压

目录为/usr/local/src目录

wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz    
sudo tar xvfz 1.7.30.3.tar.gz -C /usr/local/src/ngx_pagespeed-1.7.30.3-beta

动态加载模块

使用dso_tool,动态加载pagespeed模块

此种方法为动态模块编译,可以nginx -V 查看,不需要再次configure、make

/usr/local/tengine/sbin/dso_tool --add-module=/usr/local/src/ngx_pagespeed-1.7.30.3-beta/

查看模块

ls /usr/local/tengine/module   (列出ngx_pagespeed.so 表示安装成功)

Tengine

编辑nginx.conf配置文件支持pagespeed

dso {
    load ngx_http_concat_module.so;
    load ngx_http_sysguard_module.so;
    load ngx_pagespeed.so;
}

...
...
Server {
  listen 80;
  index index.html index.php;
  server_name xxx.xxx.xxx;
  pagespeed on;      
  pagespeed FileCachePath /var/ngx_pagespeed_cache;
}

检查配置文件 并且重新加载nginx

nginx -t
service nginx reload

测试效果

搜索下 pagespeed,可以看到,大部分源码已经被替换

Tengine

Honest1y
版权声明:本站原创文章,由Honest1y于2018年06月25日发表,共计3360字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)