燈塔SEO培訓:珍惜SEO:Apache中關于優化頁面緩存的設置

SEO技術 黑帽SEO培訓 瀏覽

小編:Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)協議中和網頁緩存相關的幾個字段。前兩個用來控制緩存的失效日期,后兩個用來驗證網頁的有效性。要注意的是, HTTP/1.0有一個

  Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)協議中和網頁緩存相關的幾個字段。前兩個用來控制緩存的失效日期,后兩個用來驗證網頁的有效性。要注意的是, HTTP/1.0有一個功能比較弱的緩存控制機制:Pragma,使用HTTP/1.0的緩存將忽略Expires和Cache-Control頭。我們 這里以Apache2.0服務器為例,只討論HTTP/1.1協議。

  Expires

  Expires字段聲明了一個網頁或URL地址不再被瀏覽器緩存的時間,一旦超過了這個時間,瀏覽器都應該聯系原始服務器。RFC告訴我們:“由于推斷的失效時間也許會降低語義透明度,應該被謹慎使用,同時我們鼓勵原始服務器盡可能提供確切的失效時間。”

  對于一般的純靜態頁面,如html、gif、jpg、css、js,默認安裝的Apache服務器,不會在響應頭添加這個字段。Firefox瀏覽 器接受到相應后,如果發現沒有Expires字段,瀏覽器根據文件的類型和“Last-Modified”字段來推斷出一個合適的失效時間,并存儲在客戶 端。推測出的時間一般是接受到響應時間后的三天左右。

  Apache的expires_module模塊可以在Http響應頭部自動加上Expires字段。在Apache的httpd.conf文件中進行如下配置:

  #啟用expires_module模塊

  LoadModule expires_module modules/mod_expires.so

  # 啟用有效期控制

  ExpiresActive On

  # GIF有效期為1個月

  ExpiresByType image/gif A2592000

  # HTML文檔的有效期是最后修改時刻后的一星期

  ExpiresByType text/html M604800

  #以下的含義類似

  ExpiresByType text/css “now plus 2 month”

  ExpiresByType text/js “now plus 2 day”

  ExpiresByType image/jpeg “access plus 2 month”

  ExpiresByType image/bmp “access plus 2 month”

  ExpiresByType image/x-icon “access plus 2 month”

  ExpiresByType image/png “access plus 2 month”

  對于動態頁面,如果在頁面內部沒有通過函數強制加上Expires,例如header(”Expires: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”),Apache服務器會把Wed, 11 Jan 1984 05:00:00 GMT

  作為Expires字段內容,返回給瀏覽器。即認為動態頁面總是失效的。而瀏覽器仍然會保存已經失效的動態頁面。

  可以發現Firefox瀏覽器總是緩存所有頁面,不管失效、不失效還是沒有聲明失效時間。即使緩存中聲明了一個網頁的實效日期是1970-01- 01 08:00:00,瀏覽器仍然會發送該文件在緩存中的Last-Modified和ETag字段。 如果在服務器端驗證通過,返回304狀態,瀏覽器就還會使用此緩存。

  Cache-Control

  Cache-Control字段中可以聲明多些元素,例如no-cache, must-revalidate, max-age=0等。這些元素用來指明頁面被緩存最大時限,如何被緩存的,如何被轉換到另一個不同的媒介,以及如何被存放在持久媒介中的。但是任何一個 Cache-Control指令都不能保證隱私性或者數據的安全性。“private”和“no-store”指令可以為隱私性和安全性方面提供一些幫 助,但是他們并不能用于替代身份驗證和加密。

  Apache的mod_cern_meta模塊允許文件級Http響應頭部的控制,同時它也可以配置Cache-Control頭(或任何其他頭)。響應頭文件是放在原始目錄的子目錄中,根據原始文件名所命名的一個文件。具體用法請參閱Apache的官方網站。

  其中Cache-Control : max-age表示失效日期。如果沒有啟動mod_cern_meta模塊,Apache服務器會把Expires字段中的日期換算成以秒為單位的一個 delta值,賦值給max-age。如果啟動mod_cern_meta模塊,并且配置了max-age值,Apache會將這個覆蓋Expires字 段。同時,max-age隱含了Canche-Control: public。這樣瀏覽器接受到的Cache-Control : max-age和Expires值就是一致的。

  如果失效日期Cache-Control : max-ag=0或者是負值,瀏覽器會在對應的緩存中把Expires設置為1970-01-01 08:00:00。

  Last-Modified

  Last-Modified和ETag是條件請求(Conditional Request)相關的兩個字段。如果一個緩存收到了針對一個頁面的請求,它發送一個驗證請求詢問服務器頁面是否已經更改,在HTTP頭里面帶上” ETag”和”If Modify Since”頭。服務器根據這些信息判斷是否有更新信息,如果沒有,就返回HTTP 304(Not Modify);如果有更新,返回HTTP 200和更新的頁面內容,并且攜帶新的”ETag”和”Last-Modified”。

  使用這個機制,能夠避免重復發送文件給瀏覽器,不過仍然會產生一個HTTP請求。

  一般純靜態頁面本身都會有Last-Modified信息,Apache服務器會讀取頁面文件中的Last-Modified信息,并添加到http響應頭部。

當前網址:http://letianyun.cn/post/201909301158.html

?
你可能喜歡的:
骚虎影院-在线影院-成人站,亚洲大香蕉网伊人,全球最大黄色