作为Nginx组件,ngx_pagespeed将重写你的网页,让用户以更快的速度进行访问。重写的工作包括压缩图片、缩减CSS和JavaScript、扩展缓存时间,同样还包括其它一些最佳实践:
优化缓存——整合应用程序的数据和逻辑
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
最小化round-trip次数——削减连续的请求/响应周期数
最小化请求开销——削减上传大小
最小化负载大小——削减响应、下载及缓存页面大小
优化浏览器渲染——改善浏览器页面布局
移动方面的优化——优化站点移动网络和设备方面的相关特性
本文是基于LNMP环境,LNMP脚本参考:《LNMP最新源码安装脚本》
下载解压PageSpeed模块
cd/root/lnmp/srcwgethttps://github.com/pagespeed/ngx_pagespeed/archive/release-1.6.29.5-beta.zipunzip-qrelease-1.6.29.5-betawgethttps://dl.google.com/dl/page-speed/psol/1.6.29.5.tar.gztarxzf1.6.29.5.tar.gz-Cngx_pagespeed-release-1.6.29.5-beta
查看线上版本编译参数
#/usr/local/nginx/sbin/nginx-Vnginxversion:nginx/1.4.1builtbygcc4.4.620120305(RedHat4.4.6-4)(GCC)TLSSNIsupportenabledconfigurearguments:--prefix=/usr/local/nginx--user=www--group=www--with-http_stub_status_module--with-http_ssl_module
增加ngx_pagespeed模块重新编译
#wgethttp://nginx.org/download/nginx-1.4.2.tar.gz#tar-xvzfnginx-1.4.2.tar.gz#cdnginx-1.4.2/#./configure--prefix=/usr/local/nginx--user=www--group=www--with-http_stub_status_module--with-http_ssl_module--add-module=../ngx_pagespeed-release-1.6.29.5-beta/#make//注意只make不要makeinstall(如果报错请看下面)
安装ngx_pagespeed (make)32位操作系统可能会报如下错误
../ngx_pagespeed-release-1.6.29.5-beta/psol/lib/Release/linux/ia32/pagespeed_automatic.a(104.system.o.o):Infunction`cv::tempfile(charconst*)':system.cpp:(.text._ZN2cv8tempfileEPKc+0x1e):warning:theuseof`tmpnam'isdangerous,betteruse`mkstemp'objs/addon/src/ngx_base_fetch.o:Infunction`net_instaweb::NgxBaseFetch::DecrefAndDeleteIfUnreferenced()':/root/lnmp/src/nginx-1.4.2/../ngx_pagespeed-release-1.6.29.5-beta/src/ngx_base_fetch.cc:185:undefinedreferenceto`__sync_add_and_fetch_4'collect2:ldreturned1exitstatusmake[1]:***[objs/nginx]Error1make[1]:Leavingdirectory`/root/lnmp/src/nginx-1.4.2'make:***[build]Error2
解决方法:
./configure 后面加上–with-cc-opt=’-DLINUX=2 -D_REENTRANT-D_LARGEFILE64_SOURCE -march=i686 -pthread’ ,如下:
#makeclean#./configure--prefix=/usr/local/nginx--user=www--group=www--with-http_stub_status_module--with-http_ssl_module--add-module=../ngx_pagespeed-release-1.6.29.5-beta--with-cc-opt='-DLINUX=2-D_REENTRANT-D_LARGEFILE64_SOURCE-march=i686-pthread'#make#mv/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginx$(date+%m%d)#备份nginx原文件#cpobjs/nginx/usr/local/nginx/sbin/nginx#复制编译make后的文件覆盖nginx原文件#/usr/local/nginx/sbin/nginx-t#检测nginx配置文件语法是否正确nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoknginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful#kill-USR2`cat/usr/local/nginx/logs/nginx.pid`#把nginx.pid改成nginx.pid.oldbin跟着启动新的nginx#kill-QUIT`cat/usr/local/nginx/logs/nginx.pid.oldbin`#退出旧的nignx
使用ngx_pagespeed
#mkdir/var/ngx_pagespeed_cache#chownwww.www/var/ngx_pagespeed_cache#cp/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf$(date+%m%d)#备份nginx配置文件#vi/usr/local/nginx/conf/nginx.confserver{#省略pagespeedon;pagespeedFileCachePath/var/ngx_pagespeed_cache;pagespeedRewriteLevelCoreFilters;pagespeedEnableFilterslocal_storage_cache;pagespeedEnableFilterscollapse_whitespace,remove_comments;pagespeedEnableFiltersoutline_css;pagespeedEnableFiltersflatten_css_imports;pagespeedEnableFiltersmove_css_above_scripts;pagespeedEnableFiltersmove_css_to_head;pagespeedEnableFiltersoutline_javascript;pagespeedEnableFilterscombine_javascript;pagespeedEnableFilterscombine_css;pagespeedEnableFiltersrewrite_javascript;pagespeedEnableFiltersrewrite_css,sprite_images;pagespeedEnableFiltersrewrite_style_attributes;pagespeedEnableFiltersrecompress_images;pagespeedEnableFiltersresize_images;pagespeedEnableFiltersconvert_meta_tags;location~".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+"{add_header"""";}location~"^/ngx_pagespeed_static/"{}location~"^/ngx_pagespeed_beacon$"{}location/ngx_pagespeed_statistics{allow127.0.0.1;denyall;}location/ngx_pagespeed_message{allow127.0.0.1;denyall;}#省略}#/usr/local/nginx/sbin/nginx-tSettingoptionfrom("on")Settingoptionfrom("FileCachePath","/var/ngx_pagespeed_cache")nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoknginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful#servicenginxrestartStoppingnginx:[OK]Startingnginx:Settingoptionfrom("on")Settingoptionfrom("FileCachePath","/var/ngx_pagespeed_cache")[OK]#curl-I'http://www.linuxeye.com/'|grepX-Page-Speed%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed00000000--:--:--0:00:03--:--:--0X-Page-Speed:1.4.0.0-2748
注意:
如果discuz使用了伪静态要注销掉下面部分(前面加#注销):
#if(!-e$request_filename){#return404;#}
使用后效果如下:
使用PageSpeed模块效果演示网站:http://www.server110.com