google pagespeed在作為一個nginx的子產品在研發這麼久之後仍是beta版本,着實有點尴尬,不過也證明了該項目是成功的,最起碼它仍在疊代,實際上在使用中,我們也碰到一些非子產品本身的問題,譬如當它基于反向代理時模闆的尋址,圖檔的url重寫…為此不得不對其做一些配置讓它不是看起來多了一個協定,而是真正的能對頁面的細節進行優化,最大限度的壓榨伺服器的的性能提高使用者通路速度..
在實際使用中,它能夠帶來什麼
1、優化緩存并整合應用程式的資料和邏輯
2、優化往返請求,降低請求開銷,降低響應頁面大小
3、對css javascript 進行合并,這裡相對來說要慎用(需要前期測試)
4、dns預加載,延時加載圖檔等過濾器的支援(贊)
5、等等(少說多做)
首先是我的目錄結構
###其他目錄不作解釋,source 目錄即所有源碼包的路徑###
[root@ipython software]# ls /software/
mysql nginx php readme.txt sharelib source var_temp
###庫檔案的支援###
[root@ipython software]# ls /software/sharelib/
curl freetype gd google-libunwind google-perftools libiconv libjpeg libmcrypt libpng libtool libxml2 mhash ncurses openssl pcre zlib
nginx版本:
[root@ipython software]# curl -i 127.0.0.1
http/1.1 200 ok
server: nginx/1.7.5
date: fri, 07 nov 2014 14:26:25 gmt
content-type: text/html
connection: keep-alive
vary: accept-encoding
下載下傳位址和參考位址(牆内就不建議點了):
ngx-pagespeed for github
[root@ipython source]# wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.1-beta.zip
ngx-pagespeed optimization library
[root@ipython source]# wget https://dl.google.com/dl/page-speed/psol/1.9.32.1.tar.gz
ngx-pagespeed official
http://ngxpagespeed.com/ngx_pagespeed_example/
googledevelopers
https://developers.google.com/speed/docs/mod_pagespeed/build_ngx_pagespeed_from_source
開始編譯ngx-pagespeed
###解開程式包--我在寫這篇文章的時候,它似乎已經又更新了...建議參考的同學使用最新版###
[root@ipython source]# unzip release-1.9.32.1-beta
[root@ipython source]# cd ngx_pagespeed-release-1.9.32.1-beta/
##将pagespeed 的優化庫解壓至目前目錄##
[root@ipython ngx_pagespeed-release-1.9.32.1-beta]# tar zxf ../1.9.32.1.tar.gz -c ./
##此刻你的目錄路徑應該是這樣的##
[root@ipython ngx_pagespeed-release-1.9.32.1-beta]# ls
config cpp_feature license psol readme.md scripts src test
##重新編譯nginx##
[root@ipython ngx_pagespeed-release-1.9.32.1-beta]# cd ../nginx-1.7.5/
###請基于你自己的編譯參數加上最後一條 --add-module ,切勿直接複制粘貼,因為我的環境是基于自己弄的一鍵包來示範的(如果你也需要?)###
[root@ipython nginx-1.7.5]# ./configure --prefix=/software/nginx --user=nginx --group=nginx --add-module=../ngx_pagespeed-release-1.9.32.1-beta
##預配置結束後執行##
[root@ipython nginx-1.7.5]# make
##如果你是全新安裝,在預配置結束後make install,如果是重新編譯,你可以這樣##
[root@ipython nginx-1.7.5]# mv /software/nginx/sbin/nginx /software/nginx/sbin/nginx.bak
[root@ipython nginx-1.7.5]# cp objs/nginx /software/nginx/sbin/
[root@ipython nginx-1.7.5]# kill -usr2 `cat /software/nginx/nginx.pid`
[root@ipython nginx-1.7.5]# kill -quit `cat /software/nginx/nginx.pid.oldbin`
讓常用的配置開啟pagespeed
##注意那條include##
[root@ipython nginx-1.7.5]# vi /software/nginx/conf/nginx.conf
server
{
listen 80;
server_name 127.0.0.1;
include pagespeed.conf;
...我省略了好多行
#新增配置檔案,配置後面再解釋#
[root@ipython nginx-1.7.5]# cat /software/nginx/conf/pagespeed.conf
pagespeed on;
pagespeed filecachepath /software/var_temp/nginx/pagespeed/;
##重新開機nginx|reload也可以##
[root@ipython nginx-1.7.5]# service nginx restart
stopping nginx: [ ok ]
starting nginx: [1107/230146:info:google_message_handler.cc(35)] no threading detected. own threads: 1 rewrite, 1 expensive rewrite.
[ ok ]
##看看http頭 和前面是不是不一樣了##
[root@ipython nginx-1.7.5]# curl -i 127.0.0.1
date: fri, 07 nov 2014 15:03:29 gmt
x-page-speed: 1.9.32.1-4238
cache-control: max-age=0, no-cache
##臨時關閉pagespeed##
[root@ipython nginx-1.7.5]# curl -i 127.0.0.1?modpagespeed=off
date: fri, 07 nov 2014 15:04:56 gmt
一個示例配置檔案
# 啟用ngx_pagespeed
# 禁用corefilters
pagespeed rewritelevel passthrough;
# 啟用壓縮空白過濾器
pagespeed enablefilters collapse_whitespace;
# 啟用javascript庫解除安裝
pagespeed enablefilters canonicalize_javascript_libraries;
# 把多個css檔案合并成一個css檔案
pagespeed enablefilters combine_css;
# 把多個javascript檔案合并成一個javascript檔案
pagespeed enablefilters combine_javascript;
# 删除帶預設屬性的标簽
pagespeed enablefilters elide_attributes;
# 改善資源的可緩存性
pagespeed enablefilters extend_cache;
# 更換被導入檔案的@import,精簡css檔案
pagespeed enablefilters flatten_css_imports;
pagespeed cssflattenmaxbytes 5120;
# 延時加載用戶端看不見的圖檔
pagespeed enablefilters lazyload_images;
# 啟用javascript縮小機制
pagespeed enablefilters rewrite_javascript;
# 啟用圖檔優化機制
pagespeed enablefilters rewrite_images;
# 預解析dns查詢
pagespeed enablefilters insert_dns_prefetch;
# 重寫css,首先加載渲染頁面的css規則
pagespeed enablefilters prioritize_critical_css;
# example 禁止pagespeed 處理/ipython/目錄
pagespeed disallow "*/ipython/*";
原文釋出時間:2014-11-14
本文來自雲栖合作夥伴“linux中國”