強緩存刷新
㈠ 怎麼解決瀏覽器強制刷新緩存
是在使用的瀏覽器本身的設置問題
可以試試誇克瀏覽器,手機瀏覽器中比較簡潔實用的瀏覽器,性能也不錯
㈡ 如何強制客戶端刷新緩存
這樣可以清除緩存:
System.Web.HttpContext.Current.Cache.Remove(string CacheName)
如果你的圖片更新頻繁,你就沒必要把那個圖片加入到緩存,如果一定要加,而又不想每次刷新都清除緩存,那你只有給你改變過的圖片加上標識...
緩存是為了把一些變更少的內容保存在客戶端,如果你的圖片老在更新的話,那我覺得那個圖片不應該在緩存的范圍內,當然如果你有辦法強制清除用戶的緩存的話,這個也不難實。關鍵的是,你的圖片是同名
㈢ 360極速瀏覽器「強制刷新(忽略緩存)當前網頁」快捷鍵是什麼拜託各位大神
360極速瀏覽器ldquo;強制刷新(忽略緩存)當前網頁rdquo;快捷鍵是Ctrl+F5、Shift+F5。360極速瀏覽器可以使用快捷鍵來快捷使用瀏覽器的功能。 360極速瀏覽器是一款極速、安全的無縫雙核瀏覽器。它基於Chromium開源項目,具有閃電般的瀏覽速度、完備的安全特性及海量豐富的實用工具擴展。此外,為了更適合國內用戶使用,它加入了滑鼠手勢、超級拖拽、恢復關閉的標簽、地址欄下拉列表等實用功能,配合原有Chromium的順滑操作體驗,讓瀏覽網頁時順暢、安心。 360極速瀏覽器是國內最安全的雙核瀏覽器。360極速瀏覽器集成了獨有的安全技術,充分利用360的優勢,集成了惡意代碼智能攔截、下載文件即時掃描、隔離沙箱保護、惡意網站自動報警、廣告窗口智能過濾等強勁功能,內置最全的惡意網址庫,採用最新的雲安全引擎。 360極速瀏覽器是國內主流雙核瀏覽器中唯一全面繼承了chromeldquo;沙箱(sandboxing)rdquo;技術的瀏覽器。它能將網頁與flash都安排在沙箱保護中運行,所以,當某個網頁出現錯誤或者被病毒攻擊時,不會導致整個瀏覽器或者其它程序關閉。 360極速瀏覽器在安全性能上也延續了360作為國內互聯網第一安全廠商的優勢。採用創新的ldquo;雲安全rdquo;防護體系,ldquo;雲安全rdquo;惡意網址庫實現了對惡意網站、網址的實時監控和更新,並第一時間對用戶進行安全預警,可以有效遏制釣魚網站為用戶設下的各類欺詐陷阱,大大提升風險控制的防範等級,堪稱為病毒木馬布下了一張ldquo;天羅地網rdquo;。
㈣ 關於vue強制刷新
在vue中使用了keep-alive標簽後,組件會被緩存下來,這時候如果需要強制刷新當前頁面有兩種思路。
一,使用v-if標簽,銷毀組件,然後再重新生成組件
二,在include數組中刪除組件的記錄,再重新添加記錄
㈤ APP中緩存、載入與刷新機制設計【轉載】
1、為什麼要加緩存?
場景一:【等待】,在向伺服器請求新的數據時。我們讓用戶看到什麼?第一種是漂亮的等待載入頁面;第二種是緩存的內容。對於第二種,用戶可以對頁面進行操作,等待新數據時可以查看舊數據,更具有「可操作性」與「可用性」,從而減輕了從伺服器獲取數據這一動作的大小和時間長短,增強了用戶體驗。另一方面,如果內容更新的間隔較長或者用戶刷新的間隔較短,在沒有緩存的情況下,很多數據我們會多次重復的向伺服器獲取,增加了成本。
場景二:【結果】沒有聯網,或者在地鐵上網路太差無法載入數據時,如果留給用戶一個空白頁面,實在是感覺有點不負責任啊。並且很多功能在沒有聯網的情況下也有使用的可能性,比如:APP中的通訊錄,查看一些聊天記錄,通知信息,文章列表等。因為用戶打開APP不一定是要看新信息,說不定是回顧老信息(或許老信息里也有用戶之前沒看的),所以恰當的緩存可以滿足更多的用戶場景。
場景三:【金錢】有一天,一個用戶發現自己裝了某個APP後流量用的特別快,Ta可能永遠將這個APP打入冷宮了,而增加緩存正是節省流量的一個方法。雖然節省的不多或者用戶也察覺不到,但是作為一個有態度的產品經理,應該多做一些思考。
2、什麼是緩存?
緩存可分為如下幾類:
(1)app緩存。
(2)固定緩存。
(3)可手動清理的緩存。
(4)不可手動清理的緩存。
(5)臨時緩存。
其中,臨時緩存常用於一個功能頁面內,保存各欄目的緩存。同一個功能里會把子功能分為多個欄目進行劃分,每個標簽欄目下的內容在本次使用中都可保存為臨時緩存,在該功能里切換欄目,不需要重新載入數據,使用緩存顯示。
對於用戶來說,使用時達到了無縫切換瀏覽,對於伺服器來說,在短時間內數據很少會有更新,所以在一般情況下能滿足用戶的正常需求,並達到體驗優秀。
臨時緩存的清理機制是:退出該功能模塊就清除之前的緩存。也就是說下次進入該功能模塊,需要重新獲取一次數據。
很多時候我們都會用到臨時緩存,因為那些信息真的不是那麼重要,而且不需要經常反復查看,那對於那些我們經常使用而且經常需要反復查看的信息,馬海祥建議採取固定緩存,保存在本地,方便下次翻閱時不需要再一次向伺服器請求數據了。
對於固定緩存又會細分為可手動清理的緩存和不可手動清理的緩存。
第一種是我們最常見的緩存,幾乎所有產品都採用這種緩存方式。平時用戶瀏覽文章、圖集載入的數據就以這種形式緩存在本地,下次看回這篇文章、圖集時就不需要載入了。用戶也可以手動把這些緩存清理了,釋放空間。
而對於某些特殊場景,例如一些相對固定的數據,我們不願意一開始就打包進App里,這樣會占太大容量,造成產品包很大,也不願意每次進入頁面都向伺服器載入這些信息,那怎麼辦?建議的解決方法就是我們可以只載入一次就永遠存在本地了,這樣安裝包也不會大,以後也不用載入了。
3、如何清理緩存?
一般App都會在「設置」里提供一個清理緩存的功能,一鍵把空間釋放。除此之外,App最好要設計自動清理機制,可以通過兩個維度來設計這個機制。
(1)、時間
通過設定一個固定的時間,或者根據用戶使用周期靈活設定時間來清理緩存。每個產品的場景不一,用戶使用頻率不一,設定這個機制的時候就需要結合實際情況考慮了。
(2)、容量
一般是設定一個容量上限,採用堆棧的設計原理進行緩存清理,溢出堆棧的舊數據將自動清除。
1、頁面載入
方案1:單頁面整體載入
這種載入比較簡單,一般運用在頁面內容比較單一的情況下,所以直接一次性載入完所有數據後再顯示內容。其單頁面載入失敗的狀態相對來說也比較好處理。
方案2:單頁面分塊載入
這種方案的特點是,能讓用戶逐步看到內容,在這個漸進的過程中降低用戶的焦慮心理。
其中又可以分為,模塊間有關聯性的,先載入父內容,再載入子內容。如優酷,先把欄目載入出來,再載入各欄目的內容。
模塊間沒有絕對關聯性的,可獨自載入各自模塊內容,根據請求的速度不同分別顯示。這樣處理有一定幾率讓用戶在沒完全刷出數據的情況下就能找到自己需要的功能,如大眾點評、淘寶客戶端等。
框架固定,內容更新的,可先把框架顯示出來,再把各模塊的數據各自載入顯示,如各種iOS自帶應用。
這種分模塊載入的需要特別注意載入失敗的狀態,畢竟每個模塊都提示載入失敗,點擊重試是很挫的一件事,可以根據信息的優先順序來決定哪些數據失敗了採用默認狀態,哪些數據採用失敗提示。
方案3:跨頁面載入
父頁面&子頁面 or 同一app內,頁面間欄位可以復用的,在載入子頁面時不需要重新載入新數據。
方案4:預載入
這種載入方式的特點是,在載入一個頁面內容的同時,預測用戶的下一步行為,並為他下一步需要使用的頁面載入內容,使得他在下一步的操作中能立刻獲取信息而不需要載入等待。
預載入提供給用戶無縫的產品使用體驗,使得用戶在使用產品的過程中更直接流暢,沒有被打斷的感覺。
具體的例子有:
在瀏覽圖集的時候,當看到第一張的圖片時,就自動後台載入第二第三第四張圖片,用戶瀏覽完第一張圖片切換到第二張時就不會有載入等待的過程。
在瀏覽新聞列表時,就把每篇新聞的內容在後台進行預載入,用戶選擇看某篇新聞時,能立刻閱讀到內容。
但是這種方案也需要面臨很多的問題,馬海祥覺得最直接的就是流量問題,因為會自動跑掉很多用戶可能根本用不上的數據流量,所以,一般情況下馬海祥建議可以設定在wifi環境才採用這種載入模式。又或者設定載入規則,只把主要內容預載入,而部分次要內容可以在用戶真的用到的時候才載入,例如預載入新聞正文的情況,可以只載入文本信息,圖片信息等到用戶進入內頁才載入。這種預載入與分塊載入結合的方式也普遍運用在各個場景。
另外,預載入也需要時間的,他只是不在客戶端顯示給用戶,默默在後台運作而已,需要特殊考慮未載入完用戶就使用到那些信息的情況,所以在做預載入設計時需要同時考慮另一種適合該情況的普通載入方式。
預載入需要根據具體的場景來進行設計,設定好信息優先順序,綜合考慮各種類型信息的具體大小流量,整體考慮預載入的方式,這些都是需要經過精心分析思考的。
隨著網路環境的發展,預載入將成為以後產品普遍的載入方式,他提供給用戶的無縫使用體驗**地提升了產品的可用性。
2、操作載入
除了頁面的信息需要載入,頁面內的操作也是需要通過給伺服器發送請求記錄的。
方案1:載入層
進行一個操作後,彈出模態的提示層,告知用戶正在載入。採用模態的提示主要是防止用戶在該過程中進行其他操作,導致當前載入出錯。由於採用模態的提示,並且有可能因為網路原因導致長時間處於載入狀態,建議提供一個「關閉」的操作,中止本次載入,恢復App可用狀態。載入失敗時可在當前浮層變換為失敗提示。模態提示層是最穩妥的方式,但他會使用戶在使用過程中有打斷的感覺。
方案2:控制項自身載入狀態
這種方式是把操作載入的狀態與控制項的樣式結合起來了,對某個控制項進行操作後,控制項變換為載入狀態,此時控制項不能重復操作。由於這種載入方式是控制項的自身狀態,不影響其他操作,所以用戶也可以對頁面進行其他操作,可能會導致同時有多個請求的情況,增加了載入失敗的風險,這也算是這種方式的弊端,不過這種極端情況很少出現。請求失敗後,可配合Toast提示告知用戶失敗的原因。
方案3:後台載入
用戶在操作後,客戶端立刻反饋操作成功,然後把請求放到後台與伺服器交互,這一過程用戶不需要了解,不需要等待,在正常情況**驗是非常棒的。
但是在極端情況下會出現一些莫名其妙的狀況,由於是後台記錄請求並與伺服器交互,所以實際請求是否成功客戶端是不說明的,全部以操作成功來顯示,這就會導致用戶誤以為操作成功了,但實際上下次來看發現沒有成功。
所以,這種載入方式是需要根據具體使用場景來權衡使用的,對於一些重要的操作,建議還是使用模態的方式載入,對於一些小操作,如點贊、訂閱、關注,可採用後台載入的方式。
3、下一頁載入還是當前也載入
用戶進入首頁,正式邁出體驗的第一步,接下來迎接的就是基於用戶目標的界面間跳轉。完成界面的跳轉,會有各種載入策略,但無論形式如何,我們都可以將其歸為兩大類:「下一頁載入」、「當前頁載入」。
(1)「下一頁載入」滿足了用戶提前窺視的需求
我們把頁面看成「點」,頁面流是連接這些點的「線」,我們以「用戶想買一條牛仔褲」這一場景作為案例做了簡單的眼動研究,從應用啟動到商品瀏覽再到商品確定最後進入下單頁,用戶所呈現的瞳孔梯次增大,即E>D>C>B>A,為了解釋這一現象,通過與被試交流,我們發現相比於各種瀏覽,用戶更期待看到他們想看到的東西。因此此時的」下一頁載入「正好,滿足了用戶提前窺視的需求。
(2) Wait!I Need Think Think
我們以同樣的方式又對「使用支付寶對手機充值」這一場景做了研究,從開始支付到二次確認支付,用戶所呈現的瞳孔都比較大,即A與B近似相等,通過訪談,我們發現與「遞增體驗流」不同的是,當用戶遇到判斷邏輯的界面時,用戶並非急於想看下一頁面到底包含怎樣的內容,而是非0即1的驗證心態,即我的操作效成功了嗎?因此在判斷邏輯界面中,用戶的內容窺視需求並不強,當然也沒什麼內容,要麼僅是一個小小的Toast,再大一點就是一個簡單的信息反饋界面(意味著「下一頁載入」在這里就是個雞肋),用戶反而對非0即1的驗證需求較為強烈,其中還伴隨著等待結果過程中的緊張感、激動感,因此界面通過 當前頁載入 表明系統正在努力地處理用戶交代的指令**了用戶的緊張感、激動感,直到結果顯現——「處理成功」,完成了非0即1驗證的滿足感。
4、先載入還是先展示
當需載入的是功能時,可以先展示再載入,當需載入的是內容時,則反過來。
淘寶
打開APP的第一個頁面是功能,所以先展示再載入的:
隨便點擊一個模塊(不要點菜單),下面要展示的將要是內容(商品),所以是先載入再展示的,沒有載入完都不展示:
京東
同樣的,功能模塊先展示後載入:
內容先載入,沒載入完不展示:
兩種方式各有利弊:
先展示,後載入:
優點:給用戶0等待的錯覺
缺點:當前數據有可能是錯的,而且得等用戶操作到最後一步才會發現
先載入,後展示:
優點:保證數據的質量和准確
缺點:網路不好時,造成等待
顯然,功能模塊對於一個產品來說是既有固定的,在短時間內幾乎不會更新,所以這種數據出現錯誤或與當前狀態不同的幾率小得多,因此,可以使用先展示後載入的方式。
另一方面,內容(特別是商品數據)是最容易產生變動的,為了保證每一個消費者看到的數據都是最真實,最准確的,所以務必要先載入再展示。
1、空白頁面刷新失敗有提示
現在的應用都標榜以內容為中心,所以都會極力避免空白頁面的出現。對於大部分的應用,最好的方法就是使用緩存,進入頁面之後,先顯示之前的緩存,然後再進行內容的刷新。其次,消滅空白頁面的第二種方法就是提供系統推薦項進行替代。但是對於一些頁面,頁面內容跟用戶的使用狀態關系密切,無法避免會出現空白頁面,這時候會使用一些引導類的提示,使得頁面變得更加豐富,同時可以促進用戶產生內容。
但是一些資訊類應用,比如讀讀日報,打開默認是空白頁面,然後再載入內容(我不是很明白這種設定)。其他一些應用,比如:豆瓣一刻和MONO,每天第一次進入應用的時候也會出現空白頁面。我猜想第二類應用的展示方式的原因是這樣的。他們的內容**都是嚴格以天為單位的,每天固定時段**精選內容。他們會希望你每天只看並且看完當天的東西,所以一旦到了第二天,昨天的內容就是累贅了。所以每天第一次進入應用的時候會出現空白頁面,象徵著每天都是從新開始。此時就會對應一個「空白刷新」邏輯。
空白刷新對應的場景是這樣子的:用戶想要刷新出內容,並且用戶知道這里可以刷出新內容,但是沒有刷新成功,這時候需要給用戶一個交待。所以需要提示用戶。同時,提示完用戶之後需要給用戶一個解決方法,這就是「點擊後重試」。
2、緩存頁面刷新失敗無提示
常見的應用比如知乎、網易新聞、好奇心日報、微信朋友圈等,這些應用都會採用緩存的形式,打開之後顯示的是緩存內容,然後系統會給伺服器發送請求,如果有內容更新的話就會自動更新一次內容,更新之後的內容直接覆蓋當前的內容。更新失敗之後是沒有提示的。但是有一些應用,比如有道詞典、企鵝FM、網易雲音樂等,他們更新失敗之後是有提示的。
我覺得這兩種應用的區分點在於
應用的使用頻率;
內容的時間連續性;
界面之間的關系緊密度。
比如說網易新聞,作為一個打發時間的工具,每天使用頻率就會比較高,所以用戶進來之後是想看看有沒有更新。其次,網易新聞的內容是連續不斷更新的,所以用戶會知道當前顯示的內容是我看看過並且處理過的。最後,新聞列表頁面顯示的是摘要,用戶可以通過摘要快速進行判斷是否要進入詳情頁,摘要有助於幫助用戶回憶上一次的使用場景。
所以這就對應著一個這樣的場景:用戶只是想看看有沒有更新,所以他們已經做好了「沒有新內容」的心理預期,所以即使是更新不了內容,用戶也不會想太多。反倒是,如果進行了錯誤提示,用戶可能會有一種挫敗感。因為他知道現在有內容,只是因為網路的原因而沒有更新,他要進行的任務受到了外界因素的阻礙,由此產生一種細微的挫敗感。
3、緩存頁面刷新失敗有提示
另一類應用,使用頻率沒那麼高,或者內容不具備時間連續性的,又或者說當前界面無法喚起用戶上一次的使用場景。那麼就有必要進行率先你失敗提示了。
比如說企鵝FM,音頻類的應用註定使用不會那麼頻繁,因為通過視覺接收的信息會比通過聽覺接收的信息更快更多,同時音頻類對環境的要求較高(比如用耳機時要求環境不那麼嘈雜,外放時要求在私人場所)。其次,此類應用都是實時推薦的,不存在時間連續性的問題,用戶無法通過時間來判斷內容是否被閱讀過。再者,標題也無法幫你快速做出判斷,你還是要進去聽過才知道內容是什麼。最後如果不提醒,用戶進入到詳情頁再收到提醒,就會覺得應用浪費了用戶的時間。所以,對於此類內容,刷新失敗是有必要進行提醒的。
㈥ 什麼是強制刷新網頁
1、是網頁瀏覽後,一般會在本地留下緩存,普通刷新的話,瀏覽器會優先獲取緩存里的資源代替從伺服器上請求,以提高訪問速度。
2、強制刷新就是告訴瀏覽器不要獲取緩存,重新從伺服器請求網頁上的所有資源,適用於開發測試或者某些資源更新。
三、刷新與強制刷新的區別:一個不產生流量;一個產生流量;一個是終端,一個需要訪問遠端伺服器。對於網速不錯的電腦來說,用強制刷新還是比較好的。
四、注意事項:
1、常常刷新,讓電腦保持清醒;個人使用習慣對電腦的影響也很大,首先是要正常開關機,開機的順序是,先打開外設(如列印機,掃描儀等)的電源,顯示器電源不與主機電源相連的,還要先打開顯示器電源,然後再開主機電源。關機順序相反,先關閉主機電源,再關閉外設電源。
2、盡量地減少對主機的損害,因為在主機通電的情況下,關閉外設的瞬間,對主機產生的沖擊較大。關機後一段時間內,不能頻繁地做開機關機的動作,因為這樣對各配件的沖擊很大,尤其是對硬碟的損傷更為嚴重。一般關機後距離下一次開機的時間,至少應有10秒鍾。
3、特別要注意當電腦工作時,應避免進行關機操作。如機器正在讀寫數據時突然關機,很可能會損壞驅動器(硬碟、軟碟機等);更不能在機器工作時搬動機器,即使機器未工作時,也應盡量避免搬動機器,因為過大的振動會對硬碟一類的配件造成損壞。
4、關機時必須先關閉所有的程序,再按正常的順序退出,否則有可能損壞應用程序。
㈦ FM怎麼樣清理緩存刷新
方法1:
直接用馨雨工具的清除緩存功能,重啟游戲。
方法2:
在游戲設置中把「強制刷新皮膚緩存」(Always reload skin cache)勾上,然後點確定,刷新皮膚。
方法3:
XP系統緩存文件夾為「C:\Documents and Settings\你的用戶名\Application Data\Sports Interactive\Football Manager 2009\Cache」,直接刪除該文件夾,重啟游戲。更具體地,英文緩存為English文件夾中的skc文件,中文緩存為Chinese (Simplified)文件夾中的skc文件。
㈧ 瀏覽器緩存及刷新
1、伺服器開啟Cache-Control緩存控制(優先順序更高)
(相對時間,在這個時間之前不會和伺服器通信,本地拿過來直接用)
Cache-Control:max-age=3600,這里是3600秒過期,過期前不會和伺服器通信,直接用本地緩存
Cache-Control:no-cache,不使用本地緩存
2、伺服器開啟Expires(過期時間,絕對時間)
Expires:Thu,21 Jan 2017 23:39:02 GMT
1、Last-Modified(伺服器返回此文件最後修改時間)
If-Modified-Since(客戶端第二次請求該資源帶著上次伺服器返回的此文件最後修改時間,比對是否相同)
2、Etag(優先順序更高)(第一次請求資源伺服器返回一個Etag值)
If-None-Match(第二次請求資源客戶端帶著之前的Etag值給伺服器進行比對)
如果多個參數同事存在時:
強緩存優先順序更高,而在強緩存中,Cache-Control比Expires優先順序高
協商緩存中,Etag比Last-Modified優先順序高
1、正常操作:地址欄輸入url,跳轉鏈接,前進後退等
2、手動刷新:F5,點擊刷新按鈕,右鍵菜單刷新
3、強制刷新:ctrl+F5
1、正常操作:強制緩存有效,協商緩存有效
2、手動刷新:強制緩存失效,協商緩存有效
3、強制刷新:強制緩存失效,協商緩存失效
㈨ 前端瀏覽器緩存機制
在前端開發中,性能是一個永恆的話題,沒有最好,只有更好。判斷一個網站性能好壞,一個直入眼觀的即是網頁的反應速度,有一個方式就是使用緩存,一個優秀的緩存策略可以縮短網頁請求的時間,減少延遲,並且網頁可以重復利用,還可以減少帶寬,降低網路負荷。
1: 為什麼需要緩存?
a:緩存可以減少用戶等待時間,提升用戶體驗
b:減少網路帶寬消耗
c:降低伺服器壓力
Note:緩存使用不當,也會造成『臟數據』問題
2:常見的緩存類型
強緩存 -
Expires伺服器端設置,表示該資源的過期時間,會有弊端,客戶端時間和伺服器時間不一致的問題。
Cache-Control:max-age表示緩存資源的最大生命周期,單位是秒
所以Expires 結合 Cache-Control 一起使用,大型網站中一般比較適用
協商緩存-
Last-Modified:值為資源的最後更新時間,隨伺服器response返回
If-Modified-Since:通過比較兩個時間來判斷資源在兩次請求期間是否有過修改,如果沒有,則命中協商緩存
Etag:表示資源內容的唯一標識,即資源的消息摘要
If-None-Match:伺服器通過比較請求頭中的If-None-Match與當前資源的Etag是否一致來判斷資源是否在兩次請求期間有過修改
3:緩存流程圖示:
a:瀏覽器會先檢測強緩存類型(Cache-Control 或者 Expires)是否有效;命中直接瀏覽器本地獲取緩存資源
b:未命中。伺服器會根據請求頭Request Header驗證這個資源是否命中協商緩存,稱之為HTTP二次驗證,命中,伺服器返回請求,但返回資源,而是告訴客戶端直接中直接從瀏覽器緩存中獲取
Note:
1.強緩存不會發生請求,協商緩存存在伺服器請求
2.當協商緩存也未命中時,則伺服器會將資源發送到客戶端
3.F5刷新頁面,會跳過強緩存
4.Ctrl+F5刷新頁面,跳過強緩存和協商緩存
5.不會緩存的情況
HTTPS POST請求 根據Cookie獲取認證信息 Request Header Cache-Control:no-cache, max-age=0
6.小故事大道理
上文對整個概念做了闡述,還是不夠形象,我們來通過幾個小故事生動理解一下:
故事一:Last-Modified
瀏覽器:Hi,我需要 jartto.min.js 這個文件,如果是在 Last-Modified: Fri Feb 15 2019 19:57:31 GMT 之後修改過的,請發給我。
伺服器:(檢查文件的修改時間)
伺服器:Oh,這個文件在那個時間之後沒有被修改過,你已經有最新的版本了。
瀏覽器:太好了,那我就顯示給用戶了。
故事二:ETag
瀏覽器:Hi,我需要 jartto.css 這個文件,有沒有不匹配 3c61f-1c1-2aecb436 這個串的
伺服器:(檢查 ETag…)
伺服器:Hey,我這里的版本也是 3c61f-1c1-2aecb436,你已經是最新的版本了
瀏覽器:好,那就可以使用本地緩存了
㈩ 瀏覽器緩存的方式和類型(筆記)
瀏覽器緩存只是計算機緩存的一種
1.內存緩存
將數據存到內存
2.代理伺服器緩存
就是個自己找的中介。你拿東西先找中介,中介找房東,房東給中介,中介又給你。比如你需要房子鑰匙,房東把鑰匙放在中介那,你直接從中介那裡拿鑰匙。
3.CDN緩存
將數據存到CDN伺服器。CDN也是個中介,不過這個中介是根據中介的忙碌程度(CDN伺服器忙碌程度)、跟你的距離(CDN伺服器和你的距離)自動給你分配的。
4.瀏覽器緩存( 我是個前端,只關注瀏覽器緩存。 )
根據HTTP協議決定要不要緩存,以什麼方式緩存,緩存到哪(內存還是硬碟等)。
瀏覽器緩存是將瀏覽器請求過的數據(資源文件)保存到電腦上。需要再次使用的時候,直接從電腦上獲取保存的數據(資源文件),這就是瀏覽器緩存
1.減少網路請求,節省流量
2.減輕伺服器壓力
3.資源載入速度快了,前端性能就更好了
1.Server Worker
還沒搞懂,搞懂了再來寫。
2.Memory Cache
內存中的緩存,關閉頁面進程就釋放內存
3.Disk Memory
硬碟中的緩存,不主動清理就一直在
4、Push Cache
推送緩存,是HTTP/2的內容,並沒有嚴格執行HTTP頭部的緩存指令。在Server Worker、Memory Cache、Disk Cache都沒有命中的時候,它會被使用。在Session中存在,Session結束就會被釋放,緩存時間短暫。
1.先去內存查找,找到直接載入
2.內存找不到,硬碟中找,找到直接載入
3.硬碟找不到進行網路請求
4.把請求獲取的資源再緩存到硬碟和內存
1.強緩存
控制強制緩存的欄位分別是Expires和Cache-Control,Cache-Control優先順序比Expires高
-Expires設置一個絕對時間的GMT格式的時間字元串,這個是資源失效時間( 客戶端的時間小於Expires的值,缺陷就是客戶端的時間被改變就有問題 ),在這個時間之前都直接讀取緩存。
-Cache-Control替代Expires,它利用的是相對時間,利用header信息欄位的max-age值判斷。
2.協商緩存
-Last-Modified/If-Modified-Since
Last-Modified:瀏覽器向伺服器發送資源最後的修改時間
If-Modified-Since:當資源過期時,發現響應頭具有Last-Modified聲明,則再次向伺服器請求時帶上頭if-modified-since,表示請求時間。伺服器收到請求後,發現有if-modified-since則與被請求資源的最後修改時間進行對比(Last-Modified),若最後修改時間較新,說明資源又被改過,則返回最新資源,返回200;若最後修改時間較小,說明資源無新修改,返回304 ,使用緩存文件。
缺點:單位是秒,一秒內多次改變會認為沒過期
-ETag/If-None-Match
ETag:由伺服器生成返回給前端,幫助伺服器控制web端的緩存驗證,伺服器會生成並且返回當前資源文件的一個唯一標識
If-None-Match:當資源過期時,發現響應頭具有Etag聲明,則再次向伺服器請求時帶上頭if-none-match(唯一標識Etag值)。伺服器收到該請求後,發現有If-None-Match則根據If-None-Match的欄位值與該資源在伺服器的Etag值做對比,一致則返回304,代表資源無更新,繼續使用緩存文件;不一致則重新返回資源文件,狀態碼為200。
1.強緩存不發請求,協商緩存會發請求給伺服器確認有沒有過期
2.強緩存文件更新瀏覽器不知道,協商緩存更新瀏覽器能實時知道
1.點擊瀏覽器的刷新按鈕時,全部走緩存
2.F5或者滑鼠右鍵刷新強制緩存失效,不影響協商緩存
3.CTRL+F5影響強制緩存和協商緩存都失效