web伺服器:apache | microsoft-iis | nginx | lighttpd | squid | litespeed | ibm_http_server |varnish
讓web站點的內容快取在瀏覽器中,減少伺服器計算開銷,避免頻寬浪費(網路io開銷)
快取協商
快取協商一般基於get請求的情況,而對於post型別的請求,瀏覽器一般不啟用本地快取.
一last-modified 一般web伺服器會為靜態檔案的http響應頭自動生成最後修改時間, 瀏覽器再次訪問時,一般增加
if-modifed-since的標記,對於靜態內容,web伺服器只要獲得靜態檔案的最後修改時間和瀏覽器詢問的時間進行對比即可.
304 not modified 告訴瀏覽器,內容沒有更新,可使用本地快取
使用這種方式的伺服器: nginx
二 etag
採用一串編碼來標記內容. web伺服器為響應頭增加etag的標記,瀏覽器在http請求頭中附加if-none-match標記.
使用這種方式的伺服器: tomcat, apache
基於最後修改時間的快取協商,使用者的請求在伺服器之間輪詢,實現負載均衡時,這些伺服器同乙個檔案的最後修改時間很難保證完全相同,導致使用者的請求在切換到新的伺服器時重新獲取內容,所以要注意這個問題,最後檔案的最後修改時間和內容完全相同.
瀏覽器快取截至期expires
瀏覽器在內容過期之前不再詢問伺服器,直接使用本地快取.
web伺服器一般不開啟此標記支援,需要額外配置. apache,nginx都需要增加相應設定
對於常見的靜態檔案格式,即使沒有expires標記,ie在某種快取模式下,對gif也設定永不過期,除非可配置expires馬上過期,及設定expires為當前時間或0.
對於jsp,伺服器端的httpservlet可通過設定特定http響應頭來禁止客戶端快取網頁,那麼只需在jsp的頁面頭部加入以下**,
設定response變數引用httpservletresponse物件,即可達到禁止客戶端瀏覽器快取頁面的效果:
<%
response.addheader("pragma","no-cache");
response.setheader("cache-control","no-cache");
response.setheader("expires",0);
%>
「pragma」選項適用於採用http 1.0的瀏覽器。在http 1.1中,「cache-control」選項來決定客戶端是否可以快取網頁,如果取值為「no-cache」,那麼客戶端不會把servlet生成的網頁儲存在本地快取中。http 1.0和http 1.1都支援「expires」選項,因此所有的瀏覽器都能識別該選項。「expires」選項用於設定網頁過期的時間,如果為零,就表示立即過期。如果使用者重複請求訪問該頁面,那麼瀏覽器每次都會從伺服器端獲取最新的網頁資料。
ctrl+f5強制重新整理
f5重新整理,對last-modified有效,對expires無效
'轉到' expires只對這種方式有效
適應本地的過期時間 cache-control: max-age=
對於靜態內容,web伺服器在開啟expries的同時,一般自動新增響應的cache-control標記, 瀏覽器優先考慮cache-control
快取 瀏覽器快取
瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 1 瀏覽器第一次請求時,會發出一組 http 頭,用來指導瀏覽器如何進行快取。伺服器規定乙個資源是否要進行快取,主要由響應頭中的expires...
瀏覽器快取
1.為什麼使用瀏覽器快取 以前了解的動態指令碼加速,或者動態內容快取之類,他們的原理都是避免伺服器重複計算,結果仍保留在伺服器端,這樣獲取資料還得從伺服器檢索然後傳送到使用者瀏覽器,如果我們把這些結果放在瀏覽器中,就省去了伺服器的查詢和網路傳輸,瀏覽器快取很好的實現了這個功能 2.瀏覽器快取存放在哪...
瀏覽器快取
瀏覽器快取知識歸納 瀏覽器快取是提公升網頁效能的一大利器,但是,也是一把雙刃劍。利用的好網頁的效能會有大幅度提公升,伺服器的壓力也會減小。利用的不好,也會遇到很多的問題。本文結合瀏覽器快取的知識,結合真實案例進行分析,希望對讀者有所幫助。瀏覽器快取分類 瀏覽器快取分為強快取和協商快取,瀏覽器載入乙個...