HTTP協議控制瀏覽器緩存HTTP協議控制瀏覽器緩存

HTTP協議控制瀏覽器緩存 瀏覽器

2015.01.25 SilenceHurts 緩存

當咱們瀏覽網站的圖片時,按下F12監控,很容易就發現,當咱們第一次瀏覽該圖片時,瀏覽器返回的代碼是200,即請求正常,此時,不懂任何東西,咱們按下F5刷新頁面,注意,咱們會發現監控下的代碼返回再也不是200,而是現實304 Not Modifid,即未修改。 服務器

緣由:第一次咱們訪問圖片時,是正常的,而第二次訪問時現實304,由於此時咱們瀏覽器發現頁面未發生更改,此時使用的是本地的緩存,而並不是服務器返回的代碼,加快了速度。 網站

設置服務器緩存 spa

若某網站有N臺緩存服務器,其與主機服務器鍵使用HTTP協議的cache-control來控制哪些東西該緩存,哪些東西不須要緩存. rest

具體用法: blog

1.打開Apache服務器的mod_expires.so模塊 生命週期

    LoadModule expires_module modules/mod_expires.so 圖片

    重啓服務器 httpd –k restart io

2.在須要設在緩存的目錄中創建 .htaccess文件

而且添加: 如圖 第7,8兩行

ExpiresActive On            //開啓緩存

ExpiresByType image/png "access plus 30 seconds"    //針對png圖片,緩存生命週期30s

 

 

基本語法:

ExpiresDefault "<base> [plus] { <num> <type>}"

ExpiresByType type/encoding "<base> [plus] { <num> <type>}"

 

參數:        

base: 設置基於哪一個時間來了計算緩存日期

    Access / now :基於服務器現行的那一瞬間來開始計算緩存日期

    Modifications: 基於被修改的最後一個日期開始計算緩存日期

<type>: 緩存日期計算單位 如:seconds ,minutes, days, weeks 等

 

 

設置服務器無緩存

使用 頭信息Control-cache : no-store,must-revalidate

告訴瀏覽器該頁面不容許緩存,必須去主服務器驗證,好比驗證碼或者一些比較私密的信息等

 

具體用法:

1.在http.conf中開啓mod_header.so模塊

重啓服務器 Http –k restart

2.在要設置無緩存的目錄添加.htaccess文件

ExpiresActive On

ExpiresByType image/png "access plus 30 seconds"

<FilesMatch "\.(png|gif)$">        //若是是PNG 圖片 或者 gif 圖片則不緩存

header set Cache-control "no-store,must-revalidate"

</FilesMatch>

 

 

同時也能夠加入下面兩屬性來控制圖片的不緩存:

header unset Etag        //來設置不設置 圖片簽名 Etag

header unset Last-Modified

 

 

 

 

到此時,當咱們設置好不緩存,咱們瀏覽圖片時,即使是同一張圖片,咱們也一直刷新也顯示的是200,再也不是顯示304了

相關文章
相關標籤/搜索