《高性能網站建設指南》規則二、3—使用內容發佈網絡、添加Expires頭

使用內容發佈網絡

網站最初一般將其全部的服務器放在同一個地方。當用戶羣增長時,公司就必須面對服務器放置地點再也不適用的事實,有必要在多個地理位置不一樣的服務器上部署內容。若是應用程序web服務器離用戶更近,則一個http請求的響應時間將縮短。css

內容發佈網絡(CDN)是一組分佈在多個不一樣地理位置的web服務器,用於更加有效地向用戶發佈內容。向特定用戶發佈內容的服務器的選擇基於對網路可用度的測量。例如,CDN可能選擇網絡階躍數最小的服務器,或者具備最短響應時間的服務器。html

除了縮短響應時間以外,CDN還能夠帶來其餘優點。如備份、擴展存儲能力、緩存、緩和web流量峯值壓力。web

CDN的缺點是你的響應時間可能會受到其餘網站的影響,另外的缺點是你沒法直接控制組件服務器所帶來的特殊麻煩。例如,修改http響應頭必須經過服務提供商來完成,若是CDN服務的性能降低了,你的工做質量也隨之降低。數據庫

CDN用於發佈靜態內容,如圖片、腳本、樣式表和flash。提供動態html頁面會引入特殊的存儲需求,好比數據庫鏈接、狀態管理、驗證、硬件和os優化等。這些複雜性超越了CDN的能力範圍。瀏覽器

添加Expires頭

規則3展現瞭如何配置組件,使其可以最大化地利用瀏覽器的緩存能力來改善頁面的性能。緩存

頁面的訪問者會進行不少http請求,但經過使用一個長久的expires頭,使這些組件能夠被緩存。長久的expires頭最經常使用於圖片,但應該將其用在全部組件上,包括腳本、樣式表和flash。服務器

Expires頭

web服務器使用expires頭來告訴web客戶端它可使用一個組件的當前副本,直到指定的時間爲止。http規範中簡要地稱該頭爲「在這一日期/時間以後,響應將被認爲是無效的」。它在http響應中發送。網絡

Expires: Thu, 15 Apr 2010 20:00:00 GMT

它告訴瀏覽器該響應的有效性持續到2010年4月15日爲止。在到期前,瀏覽器在後續的頁面瀏覽中會使用緩存的圖片。併發

Max-Age和mod_expires

HTTP1.1引入了Cache-Control頭來克服Expires頭的限制。由於Expires頭使用一個特定的時間,它要求服務器和客戶端的時鐘嚴格同步。另外,過時日期須要常常檢查,而且一旦將來這一天到來了,須要再服務器配置中提供一個新的日期。性能

Cache-Control使用max-age指令指定組件被緩存多久。它以秒爲單位定義了一個更新窗。若是從組件被請求開始過去的秒數少於max-age,瀏覽器就使用緩存的版本,這就避免了額外的Http請求。一個長久的max-age頭將刷新窗設置爲將來10年。

Cache-Control: max-age=315360000

使用帶有max-age的Cache-Control能夠消除Expires的限制,你能夠同時指定這兩個響應頭——Expires和Cache-Control max-age。若是二者同時出現,HTTP規範規定max-age指令將重寫Expires頭。

對於Expires帶來的時鐘同步和配置維護問題,mod_expires Apache模塊使你在使用Expires頭時可以像max-age那樣以相對的方式設置日期。
下例中,過時時間被設計爲自請求開始的10年以後:

<FilesMatch "\.(gif|jpg|js|css)$">
ExpiresDefault "access plus 10 years"
</FilesMatch>

它同時向相應中發送Expires頭和Cache-Control max-age頭。

Expires: Sun, 16 Oct 2016 05:43:02 GMT
Cache-Control: max-age=315360000

因爲Cache-Control具備優先權,同時在HTTP1.0瀏覽器Expires生效。

不只僅是圖片

長久的Expires頭應該包含任何不常常變化的組件,包括腳本、樣式表和Flash組件。

修訂文件名

若是咱們將組件配置爲能夠由瀏覽器代理緩存,當這些組件改變時用戶如何得到更新呢?當出現了Expires頭時,直到過時爲止一直會使用緩存的版本。

最有效的解決方案是修改其全部連接,這樣,全新的請求將從原始服務器下載最新的內容。一般將版本號嵌在組件的文件名中。

總結

若是沒有長久的Expires頭,它仍然會存儲在瀏覽器的緩存中。在後續請求中,瀏覽器會檢查緩存並發現組件已通過期。爲了提升效率,瀏覽器會發送一個GET請求。若是組件沒有改變,原始服務器能夠免於發送整個組件,而是發送一個很小的頭,告訴瀏覽器可使用其緩存的組件。

這些條件請求加起來,就是緩存節省的時間。

相關文章
相關標籤/搜索