摘要:如果從指定日期之后文檔被修改過,就執行請求方法,可以與服務器響應首部配合使用,只有在內容被修改后與已緩存的版本不同的時候才去獲取內容。
web瀏覽器會自動緩存訪問過的頁面,當訪問同一個頁面的請求時,瀏覽器不再從服務器中重新下載頁面而是優先使用本地緩存中的頁面
為什么要進行web緩存從用戶的角度來看web緩存加快了上網速度,當然這是用戶主觀認為的增加了上網速度,從設計者的角度來看:
1.網絡帶寬的限制,也就是說在單位時間內,用戶從網絡上獲取的信息是有著上限的,這就限制了用戶的上網速度,而緩存可以造成一種加快上網速度的假象;
2.緩存可以有效的減少網絡冗余信息的傳輸,即同一個頁面如果用戶每個一段時間就刷新一次,服務器中的頁面并沒有發生變化,如果用戶每刷新一次服務器就傳送一個新的頁面這就造成了數據的冗余;
3.緩存可以有效地削弱瞬間擁塞現象;瞬間擁塞可能造成整個網絡和服務器的崩潰;
雖然緩存有著種種好處,但是緩存并不是簡簡單單地在本地存儲一個頁面,緩存首先要面對的一個現實問題即網絡上有海量的頁面,總不能都緩存吧;為了解決這個問題,提出了緩存命中的概念(緩存命中這個概念顯然是一個舶來品)所謂的緩存命中是指當一個請求所需的頁面在本地緩存中,并且經過檢測緩存的頁面并沒有在服務器發生變化,瀏覽器將使用本地緩存的頁面(緩存頁面的再檢測也稱為緩存頁面的保鮮度,當瀏覽器發現所需的頁面在本地緩存中,為了確定頁面是否是最新的頁面時,瀏覽器將向服務器發送一個請求詢問頁面是否是最新的,最新的依據就是頁面的最后修改時間,若服務器發現頁面是最新的,則返回一個應答,若發現頁面不是最新的將會把最新的頁面發送給瀏覽器)
緩存服務器若將緩存多帶帶地存放在一個服務器中,就形成了緩存服務器,緩存服務器的拓撲結構多種多樣,有層次結構、網狀結構和對等結構等,但是緩存服務器的處理流程基本相同:
新鮮度頁面總是可能隨時間發生變化的,那如何保證頁面總是最新的那?http協議提供文檔過期時間和服務器再驗證;
文檔過期時間:
cacahe-control:maxAge/文檔的相對過期時間 Expire: /文檔的絕對過期時間 相對過期時間相對于絕對過期時間更好一些,因為絕對過期時間依賴于計算機時鐘的本地設置;
服務器再驗證
當文檔的到期時間到了,但并不能說明文檔在服務器端也發生了變化,因此此時就需要瀏覽器向服務器進行再驗證,注意當服務器已經掛掉了,而緩存又需要驗證,緩存就要返回一條錯誤信息;
條件驗證
Http允許緩存向原始服務器發送一個條件get,將新鮮度檢測和獲取對象合并成一個get請求,請求服務器只有在文檔和緩存的文檔不一致時才會返回新的文檔。
If-Modified-Since:
If-None-Math:服務器可以提供特殊的標簽,而不是將其與最近的修改日期相匹配,這些標簽就像序列號一樣,如果已緩存的標簽和服務器的標簽不同,則執行請求的方法,返回新的內容。
緩存設置
cache-control:no-store表示不再緩存中緩存文檔
cache-control:no-cache表示可以在本地緩存文檔,但在新鮮度檢測之前不得返給瀏覽器,不管文檔是否過期;
cache-control:maxage表示文檔的最大緩存時間
Expire:表示文檔的過期時間
cache-control:must-revaildate表示在文檔過期后,必須進行新鮮度檢測后才能返回給瀏覽器
探測性過期算法:
如果未設置cache-control,且文檔有緩存線索即最后修改日期,瀏覽器可以運行探測性算法計算出一個大概的日期,其中LM-Factor算法如下:
新的過期日期=server_date+(server_date-last_modified_time)*factor server_date:緩存和服務器會話時間 factor:比例數
廣告商的困勁
1.緩存清楚
2.緩存日志
3.命中計數
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52040.html
摘要:瀏覽器緩存只存在于每個單獨的客戶端,因此它是私有緩存。表示該資源既能被瀏覽器緩存,也能被任何中間人比如代理服務器等緩存。普通刷新會啟用協商緩存,忽略強緩存。只有在地址欄或收藏夾輸入網址通過鏈接引用資源等情況下,瀏覽器才會啟用強緩存。 前言 在訪問一個網頁時,客戶端會從服務器下載所需的資源。但是有些資源很少發生變動,例如 HTML、JS、CSS、圖片、字體文件等。如果每次加載頁面都從源服...
Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Volley是Google在2013年推出來的HTTP庫,旨在幫助開發者更快更簡便的實現網絡請求。說說為什么要分析Volley的源碼吧,因為Volley中線程的轉換時通過 Thread 和 Ha...
摘要:引入了新的環境和概要信息,是一種更揭秘與實戰六消息隊列篇掘金本文,講解如何集成,實現消息隊列。博客地址揭秘與實戰二數據緩存篇掘金本文,講解如何集成,實現緩存。 Spring Boot 揭秘與實戰(九) 應用監控篇 - HTTP 健康監控 - 掘金Health 信息是從 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...
閱讀 1767·2023-04-26 00:20
閱讀 1811·2021-11-08 13:21
閱讀 1939·2021-09-10 10:51
閱讀 1571·2021-09-10 10:50
閱讀 3254·2019-08-30 15:54
閱讀 2138·2019-08-30 14:22
閱讀 1434·2019-08-29 16:10
閱讀 3097·2019-08-26 11:50