给静态站点加 gzip 和缓存:nginx 配置备忘
静态站点没什么可优化的,无非少传点、少请求点。少传点靠压缩,少请求点靠缓存。
gzip on;
gzip_comp_level 5;
gzip_min_length 512;
gzip_types text/plain text/css application/json
application/javascript application/xml image/svg+xml;
location ~* \.(css|js|svg|png|ico|woff2)$ {
expires 7d;
add_header Cache-Control "public";
}
压缩级别别拉满,5 和 9 的体积差距通常只有几个百分点,CPU 消耗却差不少。小文件压不动,还要多一次
判断,所以 gzip_min_length 设成几百字节比较合适。
缓存要按内容类型来分:图片、字体、CSS、JS 可以放心给一周以上;HTML 最好短一些,或者干脆不缓存, 否则改了页面用户看不到,还得靠改文件名来刷新。
另外注意 gzip_types 不会自动包含 text/html,不过 html 默认就在压缩范围里,
不用重复写。想看效果用 curl -I -H "Accept-Encoding: gzip" 看响应头里的
Content-Encoding。