Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
T之家 5 月 14 日消息,科技媒體 Windows Report 近日發布博文,表示微軟應用商店(Microsoft Store)近日出現“正在檢索信息”(Retrieving information)錯誤,導致用戶無法下載任意內容。
用戶反饋打開微軟應用商店并嘗試安裝應用時,頁面會跳出“正在從微軟應用商店檢索信息”,而且會持續數小時時間。
用戶原本以為是電腦或者微軟賬號的問題,不過重新注銷或者清除微軟應用商店緩存,都無法解決這個問題。
IT之家援引該媒體報道,這個問題并非個例,在微軟官方支持論壇上有很多用戶反饋遇到了相同的問題,Xbox、Prime Video、Bluemail 和 Windows File Recovery 等應用都存在上述錯誤。
存數據的簡介、用例、策略和政策
您是否注意到,如果您的互聯網連接速度較慢并瀏覽網站,文本會先于任何高質量圖像加載? 但是,在您隨后訪問同一網站時,您會發現頁面渲染速度很快。 當您訪問一個全新的網站時,加載時間比 Facebook 或亞馬遜等經常訪問的網站要長。 你知道為什么會發生這種情況嗎? 答案是緩存。
上圖是我的 Instagram 頁面在網速較慢時的樣子。 正如您所看到的,文本數據已顯示,但您看不到圖像,因為頁面仍在渲染。
為用戶提供最佳體驗以提高保留率和參與度非常重要。 在當今競爭激烈的世界中,企業會因糟糕的用戶體驗而受到影響。 想象一下,您正在任何視頻流網站上觀看您最喜歡的電視劇,但視頻一直在緩沖。 您會留下來并繼續在這樣的網站上訂閱嗎?
緩存的工作原理是“引用局部性”。 緩存充當數據的本地存儲以加速查找或檢索。 緩存的主要目標是減少讀取延遲并提高任何應用程序的吞吐量。 讓我們在下一節中看一下現實世界的類比。
假設你每天做飯。 您需要不同的食材、蔬菜、香料等來準備食物。 但你每天都去超市買這個嗎? 那樣的話就太麻煩、太費時間了。 因此,您首先檢查廚房或冰箱,以防雜貨堆積如山。 這樣就可以避免去超市的麻煩了。
在這里,您的冰箱就像一個儲藏室或當地的蔬菜商店。 使用緩存的最大好處是可以節省時間并且可以快速準備食物。
后端應用程序通常將數據存儲在數據庫中。 當客戶端獲取任何數據時,應用程序會查詢數據庫,獲取數據并將其返回給用戶。 數據庫服務器作為單獨的進程運行,并且可以在與應用程序服務器不同的計算機上運行。
從數據庫讀取數據非常耗時,因為它需要網絡調用和IO操作才能從文件系統獲取數據。 如果數據存儲在Cache中,讀取操作將會非常快。 當客戶端重復請求相同的數據時,從緩存中獲取數據比從數據庫中獲取數據更有意義。
例如:如果一條推文變得病毒式傳播,所有客戶端都會嘗試獲取同一條推文的數據。 由于 Twitter 擁有數百萬用戶,因此使用緩存將節省數百萬次對數據庫的調用。
此外,緩存還可以減少數據庫的負載。 如果在Cache中找到數據,就會節省數據庫調用,從而減少數據庫的壓力。 簡單來說,你可以把Cache想象成一個存儲鍵值對的哈希表。
下圖展示了從Cache中讀取數據的過程:
緩存中可以存儲的數據量是有限制的。 清除緩存中應用程序服務器不再需要的條目至關重要。
對于 Netflix,服務器會將最常觀看或熱門的節目緩存在緩存中。 它不需要存儲收視率隨著時間的推移而減少的節目。
例如:緩存像《金錢搶劫》這樣的電視節目(在撰寫本文時)比緩存像《奪寶奇兵》這樣的電影更有意義。
緩存可能會在某個時間點變滿,具體取決于應用程序訪問數據的方式。 因此,我們需要想出一種策略,將數據從緩存中刪除,并替換為將來更有可能被訪問的數據。
緩存驅逐策略有多種,例如LRU(最近最少使用)、LFU(最近最少使用)、MRU(最近最少使用)。 這些策略使用預定義的邏輯從緩存中逐出數據。 我們將在下一節中討論上述每一點。
此策略從緩存中刪除最近最少使用的條目。 一旦緩存變滿,最近最少使用的條目就會被逐出,而最近的條目將被添加到其中。
您可以想象 Facebook 將名人的照片存儲在緩存中。 關注者的數據訪問模式使得他們對最近的照片感興趣。 當緩存已滿時,它將踢出最近最少添加到其中的照片。
LFU 跟蹤數據項被訪問的頻率或次數。 如果緩存大小超過給定閾值,它將逐出頻率最低的條目。
當您在發短信時輸入任何單詞時,手機會開始建議您選擇多個單詞,而不是輸入整個單詞。 在內部,您的手機軟件會保存您輸入的所有單詞及其頻率的緩存。
高速緩存稍后會逐出頻率最低的單詞。 如果多個單詞之間存在平局,則最近最少使用的單詞將被逐出。 在上面的手機示例中,如果您開始使用“feature”、“features”、“feather”等詞語,它將停止向您建議“feat”一詞(因為該詞將從緩存中清除)。
在 MRU 中,最近使用的條目將被刪除,并優先考慮較舊的條目以保留在緩存中。 如果數據訪問模式使得用戶不太可能查看最近的條目,則使用此策略進行驅逐。 讓我們看一個例子。
Tinder 等約會應用程序通常會緩存用戶的所有潛在匹配項。 當用戶向左或向右滑動個人資料時,應用程序不應再次向用戶推薦相同的個人資料。 如果發生這種情況,將會導致用戶體驗不佳。
有必要驅逐最近觀察到的條目。 應用程序必須刪除向右或向左滑動的配置文件的緩存條目。
顧名思義,數據首先寫入Cache,然后再寫入數據庫。 這樣就保證了Cache中的數據和數據庫中的數據的一致性。 緩存上完成的每次讀取都遵循最近的寫入操作。
然而,這種方法的缺點是應用程序寫入延遲增加。 這種方法不適合寫入量大的系統。 它對于在數據庫中持久保存數據后頻繁重新讀取數據的應用程序非常有用。 寫入延遲可能會受到影響,但可以通過較低的讀取延遲和一致性來補償。
從上面可以看出,通過緩存寫入不適用于寫入密集型系統,因為延遲可能會增加。 另一種方法是先將數據寫入緩存并將數據標記為已修改(稍后在數據庫中更新)。
異步作業可以定期讀取緩存中所有修改的條目并更新數據庫中相應的值。 這種方法既不會影響讀取延遲,也不會影響寫入延遲。 唯一的缺點是由于緩存和數據庫之間的數據同步會存在延遲。 由于數據庫是事實來源,任何從數據庫讀取的應用程序都會讀取過時的條目。
YouTube 等網站使用寫回緩存來存儲任何視頻的觀看次數。 為病毒式視頻的每個觀看次數更新數據庫的成本高昂。 將數據寫入緩存,然后同步到DB中是一個更好的解決方案。 使用回寫式緩存可確保低讀/寫延遲。
很少有后端應用程序不經常重新讀取最新數據。 在這種情況下,使用 Write around Cache。
在此策略中,更新數據庫而不寫入緩存。 這不會向緩存加載不會被重新讀取的數據。 如果應用程序開始查詢最新數據,則會導致緩存未命中。
以下是開源內存緩存產品列表
一篇文章介紹的是《瀏覽器緩存機制》,瀏覽器緩存是瀏覽器保存數據用于快速讀取或避免請求重復資源,提升網頁加載速度。緩存的數據到底放哪了呢?作為開發者,有時也需要檢查一下緩存中的內容。所以介紹下緩存方法以及緩存內容在哪查找?
1、http 緩存
http緩存是存在于服務器與瀏覽器之間,是一種保存資源副本并在下次請求時直接使用該副本的技術。web緩存發現請求資源已經被存儲,它會攔截請求,返回資源副本,而不會去服務器重新請求資源。
具體的緩存設置,如何判斷是否有緩存?等,上一篇文章以詳細介紹,可點擊《瀏覽器緩存機制》查看。
打開瀏覽器調試模式,在 Application 右側就會有瀏覽器的 8 種緩存方式,具體如下:
2、websql
websql是較新的chrome瀏覽器支持,并以獨立規范形式出現,引入了一組使用 SQL 操作客戶端數據庫的 APIs。websql主要特點:
websql常用的API如下:
openDatabase - 打開已存在的數據庫,如果不存在,則會新建一個新的數據庫。
transaction - 控制一個事物,以及這種情況執行提交或者回滾。
executeSql - 執行 SQL 語句。
3、indexDB
indexDB 是為了能夠在客戶端存儲客觀數量的結構化數據,并且在這些數據上使用索引進行高性能的檢索。DOM存儲對于少量數據是非常友好的,但不適合存儲大量結構化數據,indexDB就是為了解決這個問題而生的。
indexDB 分別為同步和異步訪問提供了單獨的API,同步API本打算供Web Worker內部使用,但目前還未實現。異步API在Web Worker內部和外部都可以使用,另外瀏覽器對indexDB有50M大小限制。
indexDB主要特點有:
4、cookie
cookie指的就是會話跟蹤技術。一般指網站為了辨別用戶身份,進行session跟蹤而而存儲在用戶本地終端上的數據,cookie一般通過http請求頭發送到服務器。cookie主要特點有:
cookie常用操作:
setMaxAge - 設置cookie的有效期,時間單位是秒,負值時表示關閉瀏覽器后就失效,默認值為-1。
setDomain - 用于指定,只有請求指定域名才會帶上該cookie。
setPath - 只有訪問該域名下的cookieDemo的這個路徑地址才會帶cookie。
setValue - 重置 value 。
5、localstorage
localStorage 是HTML5的一種新的本地緩存方案,目前使用比較多,一般存儲ajax返回的數據,存儲特點主要有:
localStroage常用API如下:
localStorage.setItem(key,value) // 保存數據
localStorage.getItem(key) // 獲取數據
localStorage.removeItem(key) // 刪除單個數據
localStorage.clear() // 刪除全部
6、sessionstorage
sessionStorage與上述localStroage類似,它的特點主要有:
sessionStorage常用API如下:
sessionStorage.setItem(key,value) // 保存數據
sessionStorage.getItem(key) // 獲取數據
sessionStorage.removeItem(key) // 刪除單個數據
sessionStorage.clear() // 刪除全部
7、application cache
application cache是離線緩存技術,將大部分的圖片、js、css等資源放在mainfest文件配置中,頁面打開時通過mainfest文件讀取本地文件或請求服務器資源。通常用于靜態頁面的緩存。
application cache特點:
8、cacheStorage
cacheStorage 表示 cache對象的存儲。該接口提供 serviceWorker 或其他類型的工作線程或window范圍訪問的所有命名緩存的主目錄。
CacheStorage常見方法:
9、flash緩存
flash緩存也是頁面通過js調用flash讀寫特定的磁盤目錄,達到本地數據緩存的目的。這是要基于flash的,所以基本不用。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。