天天看點

Nginx PageSpeed子產品配置和使用Nginx PageSpeed子產品配置和使用

google pagespeed在作為一個nginx的子產品在研發這麼久之後仍是beta版本,着實有點尴尬,不過也證明了該項目是成功的,最起碼它仍在疊代,實際上在使用中,我們也碰到一些非子產品本身的問題,譬如當它基于反向代理時模闆的尋址,圖檔的url重寫…為此不得不對其做一些配置讓它不是看起來多了一個協定,而是真正的能對頁面的細節進行優化,最大限度的壓榨伺服器的的性能提高使用者通路速度..
Nginx PageSpeed子產品配置和使用Nginx PageSpeed子產品配置和使用

在實際使用中,它能夠帶來什麼

    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中國”