https://developers.google.com/speed/pagespeed/insights/?url
Google 提供的测试网站优化策略测试地址
根据测试结果,做出以下两个调整:
1 浏览器在请求头 head 中会设置 accept-encoding 值为 gzip, deflate,表明自己支持 这两种压缩方式,web浏览器收到请求后,就会判断是否支持,返回对应的压缩结果,压缩之后,就会节省网络传输时间,我的服务器是Nginx ,这里记录我的服务器 Nginx 对 Gzip 的设置。
$root@iZm5eabkgmsfy2phj5pr1xZ:~# vim /etc/nginx/nginx.conf
# 在 Gzip 模块中
gzip on; #开启gzip模块
gzip_min_length 1k; #超过1K的压缩 默认为0
gzip_buffers 4 16k;
#gzip_http_version 1.1; #因为我的服务器用的是http2
gzip_comp_level 5; #压缩级别 越大越消耗cpu ,压缩比例越大
gzip_types text/plain application/javascript application/json text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_disable "MSIE [1-6]\."; #禁用ie6
查看 Request Header
中的 Content-encoding:gzip
2 使用浏览器缓存
在 HTTP 标头中为静态资源设置过期日期或最长存在时间,可指示浏览器从本地磁盘中加载以前下载的资源,而不是通过网络加载。
将Expires设为将来日期,至少为一周,最多为一年(我们倾向于设置Expires,而不设置Cache-Control: max-age,因为前者受支持的范围更为广泛)。请勿将其设为超过一年的将来日期,因为这样就违反了RFC准则。 —— 引用自Google
# 设置缓存时间即可
##laravel5.4 下
$expires_time = gmdate('D, d M Y H:i:s \G\M\T', time() + $expires);
return response($html)
->header('Cache-Control', "max-age={$expires},public")
->header('Expires', $expires_time);
## yaf Rest方式下
date_default_timezone_set('PRC');
$time=time();
$interval=3600*12;//12小时
header('Expires: '.gmdate('r',($time+$interval)));
header('Last-Modified: '.gmdate('r',$time));
header('Content-Type: application/json; charset=utf-8', true, $this->code);
header('Cache-Control: max-age='.$interval, true, $this->code);