PageSpeed + Brotli

PageSpeed

# 安装依赖
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
# 用来放下载包的目录
cd /opt
# 下载包
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.zip
# 解压
unzip v1.13.35.2-stable.zip 
# 进到解压目录
cd incubator-pagespeed-ngx-1.13.35.2-stable/
# 下载 psol
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
# 解压
tar zxf 1.13.35.2-x64.tar.gz
# 创建 PageSpeed 缓存目录
mkdir /var/cache/pagespeed
# 设置权限
chown -R www-data:www-data /var/cache/pagespeed

Brotli

git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init

编译新的 Nginx

# 查看版本装的插件,复制后面的参数
nginx -V
# 添加插件
./configure 之前复制的参数 --add-module=/opt/incubator-pagespeed-ngx-1.13.35.2-stable --add-module=/opt/ngx_brotli
make # 不要 make install
# 停止 Nginx
nginx -s stop
# 备份旧文件
mv /usr/sbin/nginx /usr/sbin/nginx.old
# 复制新文件
cp objs/nginx /usr/sbin
# 开启 Nginx
nginx

Nginx 虚拟主机配置文件添加

  pagespeed on;
  pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
  pagespeed EnableFilters collapse_whitespace;
  pagespeed EnableFilters remove_comments;
  pagespeed EnableFilters insert_dns_prefetch;
  pagespeed EnableFilters combine_css;
  pagespeed EnableFilters combine_javascript;

nginx.conf

  brotli on;              #启用
  brotli_comp_level 6;    #压缩等级,默认 6,太高的压缩水平可能需要更多的 CPU
  brotli_buffers 16 8k;   #请求缓冲区的数量和大小
  brotli_min_length 20;   #指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定 20 字节
  brotli_types *;         #指定允许进行压缩类型
# brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp;
  brotli_static always;   #是否允许查找预处理好的、以 .br 结尾的压缩文件,可选值为 on、off、always
  brotli_window 512k;     #窗口值,默认值为 512k

测试

curl -I 网址,有显示即为成功

Content-Encoding: br
x-page-speed:1.13.35.2-0

PageSpeed 规则

www.modpagespeed.com/doc/

参见

  1. https://vircloud.net/operations/nginx-brot...

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
小李世界
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
发起讨论 只看当前版本


暂无话题~