利用瀏覽器特性進行快取資料 靜中求動

2021-04-20 04:45:00 字數 959 閱讀 2511

比如通過php 輸出

header("cache-control: max-age=".$maxage);

瀏覽器會對當前請求的url返回的資料進行本地靜態快取

在快取期內使用者再次訪問該位址資料將直接從客戶端本地取得,實現最有效地減少對伺服器的壓力.

當然靜態快取會出現在快取期內無法顯示最新的資料的問題.

怎麼樣實現根據需要來快取呢?

我們可以看到瀏覽器快取的特性,即根據請求的url來區分

比如 http://www.ggg.com/get_data.php?v=1 和 http://www.ggg.com/get_data.php?v=2

就是兩份不同的快取.

那在需要更新快取時,傳遞和以往不同的 v 引數,即相當於改變請求的url 就可以實現得到最新的資料.

那怎麼樣做到這裡的v引數永遠都不重複呢?(如重複了就會出現得到舊的資料) 聰明的你肯定也想到了用時間戳,這一秒與上一秒永遠不會重複.

嗯... 好像有點道理. 假如我有成千上萬個使用者,每個使用者的資料都不一樣,那不是這個url位址有很多很多個了嗎?能否說說這種情況下怎麼來實現以上的設想嗎? 

一般**針對每個使用者都有個唯一標誌,比如使用者名稱 user,為使每個使用者的url位址不一樣,我們在ajax非同步取得資料時通常有類似這樣的url (ggg 為當前使用者名稱,123假設為當前時間戳)

這樣就區分了每個使用者,針對當前使用者為了得到最新資料我們唯一需要改變的就是v ,由於使用者量非常大,每個使用者當前v值如能直接儲存在客戶端就最好了,看來cookie最合適不過了.以 test 使用者為例, 我們建個名為 test 的cookie,裡面的值就是當前的v值,生成url時v直接從該cookie裡取得,當個cookie值改變時(例如使用者更新了資料來觸發),就實現了取得新資料的效果.

小結:減少伺服器重複請求,其實客戶端可以做得更多. 

瀏覽器快取資料清理

mac電腦的瀏覽器和郵箱快取資料清理不乾淨怎麼辦?這裡為大家帶來了這款名為netshred x的快取清理工具,netshred x能夠幫助大家快速清理瀏覽器和電子郵件等應用程式的瀏覽資料,同時幫助大家刪除ssd上的資訊資料。使用netshred x自動清除快取和歷史記錄,這是一款易於使用的mac o...

瀏覽器快取資料清理

mac電腦的瀏覽器和郵箱快取資料清理不乾淨怎麼辦?這裡為大家帶來了這款名為netshred x的快取清理工具,netshred x能夠幫助大家快速清理瀏覽器和電子郵件等應用程式的瀏覽資料,同時幫助大家刪除ssd上的資訊資料。使用netshred x自動清除快取和歷史記錄,這是一款易於使用的mac o...

利用nginx設定瀏覽器協商快取

強快取與協商快取的區別 強快取 瀏覽器不與服務端協商直接取瀏覽器快取 協商快取 瀏覽器會先向伺服器確認資源的有效性後才決定是從快取中取資源還是重新獲取資源 協商快取運作原理 現在有乙個這樣的業務情景 後端的靜態資源會不定時地發生更新,而因為瀏覽器預設使用強快取,會預設從瀏覽器快取中取到過時的資源。現...