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了