Nginx 專注於 CDN 的 PageSpeed module

2016-12-06 Nginx

引前之前文章所提到的 Google PageSpeed,而 Google 也有提供 nginx 用的 ngx pagespeed module,當然也有屬於 Apache 的,但是小弟本身偏好 nginx,所以此篇會以介紹 ngx_pagespeed 設定為主

 

要安裝 ngx_pagespeed 必須在 nginx 原始碼就進行編譯,如果不想要自行編譯可以到 nginxauto 這個專案自動安裝 nginx

 

Nginx 編譯 ngx_pagespeed

Step.1 首先準備編譯工具

 

Step.2 Download ngx_pagespeed and nginx

小弟在寫文章的最新版本是 1.11.33.4,詳細可以參考 PageSpeed 官方的 release notes

 

(Option) Step.3 如果你使用的是預設 CentOS 6 的 gcc 4.4.7 版本會無法編譯 ngx_pagespeed,至少必須 gcc 4.8+ 以上,那你就必須進行這個步驟

使用 Devtoolset-2 來安裝 gcc 4.8 +

 

Step.4 編譯 nginx with ngx_pagespeed

在這邊我是按照 Linux 的檔案系統去分類,也就是 yum 安裝起來的路徑,注意 add-module,指定的是 ngx_pagespeed 的原始碼目錄,並且使用 Step.3 的 gcc 4.8+ 以上的版本進行編譯

 

Step.5 在終於編譯好 ngx_pagespeed module 後就要到 nginx 去啟用並設定 pagespeed !!

在這邊我直接設定在 server {} 裡面,但在 nginxauto 裡面我是使用另一個 ngx_pagespeed.conf 去引入,需要的時候再拿出來用。

以上只是啟動 PageSpeed 的這個 module

 

Step.6 更詳細的設定 PageSpeed 參數

參數一樣可以寫在 server or http,在進行設定之前可以先參考官方網站的設定 Configuring PageSpeed Filters

 

  • RewriteLevel:PageSpeed 預設提供三種模式提供不同情況設定
    • PassThrough:等於就是停用PageSpeed
    • CoreFilters:PageSpeed 對於此等級號稱是一般狀況下多數網站所採用的過濾及加速。(預設)
    • OptimizeForBandwidth:PageSpeed 將此級別區分為三個級別中最為安全的保證。
    • 詳細三種模式所啟用的項目: pagespeed_config_filters

如果你不了解 PageSpeed,Google 建議可以使用 OptimizeForBandwidth 級別來提升你的網站

 

  • EnableFilters:和 RewriteLevel 搭配使用,可以在 EnableFilters 加入你想要的 filter
  • DisableFilters:相同的你也可以將 filter 停用掉你不需要的項目
  • Tuning the Filters:針對每種類型控制其大小;如:CssInlineMaxBytes、JsInlineMaxBytes ….. etc

 

Step.7 重啟 nginx 生效

 

Step.8 驗證 pagespeed

打開你網站的原始碼,可以搜尋 pagespeed,正常狀況下可以看到許多的 js, css 的 url 已經被 rewrite,而一般比較小的圖檔會採用 base64 的方式呈現

 

 

結論:

PageSpeed 是一個簡單、不必花費太多心思就可以優化網站效能的模組,但是並不能套用在所有的網站,如動態、或是一些設計比較特殊的網站,其實可以發現 PageSpeed 並無法真實優化所有的項目,畢竟 PageSpeed 也是採用判斷式的處理,真正的網站加速還是必須建立在開發者對於網站的要求與規範。

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱