我一直专注于优化某个网站,使其在 Google PageSpeed Insights 工具(针对移动设备和桌面设备)上的得分为 100。大多数项目都可以完美运行,但我继续收到该网站的“启用压缩”警告。
这很麻烦,因为在我的服务器上启用了 gzip,并且唯一未压缩的资源来自 NGINX PageSpeed 模块。我已经浏览了 Google 网站上的配置页面,但除了已经到位的通用 NGINX 配置之外,没有任何内容描述如何启用压缩。
我的问题是:如何启用 gzip 压缩以使其适用于 pagespeed 资源?
我的服务器设置:
Ubuntu 12.0.4.3 LTS NGINX - 使用 PageSpeed 模块 1.6.29.5 beta 自定义编译的 1.5.4
NGINX 服务器配置:
user www-data;
#set worker processes to cpu processes
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 200m;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 3;
types_hash_max_size 2048;
gzip on;
gzip_disable msie6;
gzip_static on;
gzip_types text/plain text/css application/x-javascript …
Run Code Online (Sandbox Code Playgroud) 我只是在WebPageTest.org上查看我们的网站,他们对加快网站速度的建议之一是:
通常不应使用 ETag 标头,除非您有明确的理由需要它们
我想知道这是什么意思。这是否意味着您知道不会更改的静态内容不应该包含它们,或者这是否意味着您知道将定期更改的内容不应该包含它们,或者是否意味着您不应该普遍使用它们,除非您有具体需要。
如果是后者,什么时候使用它们合适?
我一直在研究我正在构建的网站的性能,并注意到一件奇怪的事情,我找不到答案:两个请求(总是相同的两个)神秘地延长了停滞时间,大大增加了整体页面负载。
正如您所看到的,/css
和/js
页面似乎没有明显的原因而停滞不前。有谁知道发生了什么(如果您需要更多信息,请说出来)?
如何在 Ubuntu 中构建 nginx 1.4.0 和 ngx_pagespeed
创建一个目录来下载必要的包(可选):
mkdir pagespeed && cd pagespeed
Run Code Online (Sandbox Code Playgroud)
确保你有最新版本的 nginx,我建议使用 nginx repo。
添加 nginx 仓库:
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Run Code Online (Sandbox Code Playgroud)
将此行添加到 /etc/apt/sources.list 文件:
deb http://nginx.org/packages/debian/ codename nginx (for 12.04 codename is squeeze)
deb-src http://nginx.org/packages/debian/ codename nginx
Run Code Online (Sandbox Code Playgroud)
下载 nginx 源代码并构建软件包:
sudo apt-get update
sudo apt-get install dpkg-dev
sudo apt-get source nginx
Run Code Online (Sandbox Code Playgroud)
构建 nginx deps :
sudo apt-get build-dep nginx
Run Code Online (Sandbox Code Playgroud)
确保你有这个 ngx_pagespeed 要求:
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev
Run Code Online (Sandbox Code Playgroud)
克隆 ngx_pagespeed git repo :
git …
Run Code Online (Sandbox Code Playgroud) 我的 nginx/pagespeed 模块有问题。图像缓存时间在第一个页面加载时默认为 5 分钟。
在我的 nginx.conf 中有:
##
# PageSpeed
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed Domain https://example.com;
pagespeed Domain *.example.com;
pagespeed MapOriginDomain "http://localhost" "https://example.com";
pagespeed LoadFromFile "https://example.com" "/usr/share/nginx/www/";
pagespeed LoadFromFileRuleMatch Disallow \.php$;
pagespeed XHeaderValue "Powered By ngx_pagespeed";
pagespeed ListOutstandingUrlsOnError on;
pagespeed EnableFilters extend_cache;
# image related
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters convert_gif_to_png;
pagespeed EnableFilters convert_jpeg_to_progressive;
pagespeed EnableFilters strip_image_color_profile;
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters jpeg_subsampling;
pagespeed EnableFilters lazyload_images;
# code related
pagespeed EnableFilters collapse_whitespace;
# DNS …
Run Code Online (Sandbox Code Playgroud) 我最近更改了我的一个网站的主机,我注意到页面加载缓慢。页面本身的元素加载很快(页面轻量级,CSS和JS缩小,GZIP打开,JPEG压缩...),但连接到站点的时间似乎很长。
所以我运行了一个基准来分析我的网站。事实证明,“第一个字节的时间”非常高,我认为这是我亲眼所见(与其他网站相比,Google Chrome 上的灰色微调器旋转太多)。
该测试可在此处获得:http : //cl.ly/image/213Z3I1o0p37
我也在同一台服务器上的其他网站上目睹了这种现象。这不是我的 Internet 连接,因为它发生在不同的地方,具有高速连接。
所以我的问题是:什么可能导致如此高的“第一个字节时间”?我应该查看 Apache 配置还是 PHP ..?
DNS服务器和网站分别由两家不同的公司托管的事实会影响首次加载的时间吗?
附加信息:
编辑:我对简单的 PHP 文件运行了 2 个测试——只是一个 phpinfo()。
测试 1 DNS:由 A 公司托管 网站:由 B 公司托管 测试结果:http : //cl.ly/image/1T181a452T2R
测试2 DNS:B公司托管网站:B公司托管测试结果:http : //cl.ly/image/0Z262k2F2M2c
第二个测试表明它更快,我不明白为什么。测试是一样的,代码是一样的。但是第一个有很长的时间到第一个字节......知道为什么吗?
page-speed ×6
nginx ×3
ubuntu-12.04 ×2
apache-2.2 ×1
etags ×1
networking ×1
optimization ×1
performance ×1
ubuntu ×1
web ×1
web-server ×1