整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          微軟應(yīng)用商店出現(xiàn)“檢索信息”錯(cuò)誤,卡用戶數(shù)小時(shí)無(wú)法下載應(yīng)用

          T之家 5 月 14 日消息,科技媒體 Windows Report 近日發(fā)布博文,表示微軟應(yīng)用商店(Microsoft Store)近日出現(xiàn)“正在檢索信息”(Retrieving information)錯(cuò)誤,導(dǎo)致用戶無(wú)法下載任意內(nèi)容。

          用戶反饋打開(kāi)微軟應(yīng)用商店并嘗試安裝應(yīng)用時(shí),頁(yè)面會(huì)跳出“正在從微軟應(yīng)用商店檢索信息”,而且會(huì)持續(xù)數(shù)小時(shí)時(shí)間。

          用戶原本以為是電腦或者微軟賬號(hào)的問(wèn)題,不過(guò)重新注銷或者清除微軟應(yīng)用商店緩存,都無(wú)法解決這個(gè)問(wèn)題。

          IT之家援引該媒體報(bào)道,這個(gè)問(wèn)題并非個(gè)例,在微軟官方支持論壇上有很多用戶反饋遇到了相同的問(wèn)題,Xbox、Prime Video、Bluemail 和 Windows File Recovery 等應(yīng)用都存在上述錯(cuò)誤。


          存數(shù)據(jù)的簡(jiǎn)介、用例、策略和政策

          介紹

          您是否注意到,如果您的互聯(lián)網(wǎng)連接速度較慢并瀏覽網(wǎng)站,文本會(huì)先于任何高質(zhì)量圖像加載? 但是,在您隨后訪問(wèn)同一網(wǎng)站時(shí),您會(huì)發(fā)現(xiàn)頁(yè)面渲染速度很快。 當(dāng)您訪問(wèn)一個(gè)全新的網(wǎng)站時(shí),加載時(shí)間比 Facebook 或亞馬遜等經(jīng)常訪問(wèn)的網(wǎng)站要長(zhǎng)。 你知道為什么會(huì)發(fā)生這種情況嗎? 答案是緩存。



          上圖是我的 Instagram 頁(yè)面在網(wǎng)速較慢時(shí)的樣子。 正如您所看到的,文本數(shù)據(jù)已顯示,但您看不到圖像,因?yàn)轫?yè)面仍在渲染。

          為用戶提供最佳體驗(yàn)以提高保留率和參與度非常重要。 在當(dāng)今競(jìng)爭(zhēng)激烈的世界中,企業(yè)會(huì)因糟糕的用戶體驗(yàn)而受到影響。 想象一下,您正在任何視頻流網(wǎng)站上觀看您最喜歡的電視劇,但視頻一直在緩沖。 您會(huì)留下來(lái)并繼續(xù)在這樣的網(wǎng)站上訂閱嗎?

          緩存的工作原理是“引用局部性”。 緩存充當(dāng)數(shù)據(jù)的本地存儲(chǔ)以加速查找或檢索。 緩存的主要目標(biāo)是減少讀取延遲并提高任何應(yīng)用程序的吞吐量。 讓我們?cè)谙乱还?jié)中看一下現(xiàn)實(shí)世界的類比。

          現(xiàn)實(shí)世界中緩存的類比

          假設(shè)你每天做飯。 您需要不同的食材、蔬菜、香料等來(lái)準(zhǔn)備食物。 但你每天都去超市買(mǎi)這個(gè)嗎? 那樣的話就太麻煩、太費(fèi)時(shí)間了。 因此,您首先檢查廚房或冰箱,以防雜貨堆積如山。 這樣就可以避免去超市的麻煩了。



          在這里,您的冰箱就像一個(gè)儲(chǔ)藏室或當(dāng)?shù)氐氖卟松痰辍?使用緩存的最大好處是可以節(jié)省時(shí)間并且可以快速準(zhǔn)備食物。

          緩存如何工作?

          后端應(yīng)用程序通常將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。 當(dāng)客戶端獲取任何數(shù)據(jù)時(shí),應(yīng)用程序會(huì)查詢數(shù)據(jù)庫(kù),獲取數(shù)據(jù)并將其返回給用戶。 數(shù)據(jù)庫(kù)服務(wù)器作為單獨(dú)的進(jìn)程運(yùn)行,并且可以在與應(yīng)用程序服務(wù)器不同的計(jì)算機(jī)上運(yùn)行。

          從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)非常耗時(shí),因?yàn)樗枰W(wǎng)絡(luò)調(diào)用和IO操作才能從文件系統(tǒng)獲取數(shù)據(jù)。 如果數(shù)據(jù)存儲(chǔ)在Cache中,讀取操作將會(huì)非常快。 當(dāng)客戶端重復(fù)請(qǐng)求相同的數(shù)據(jù)時(shí),從緩存中獲取數(shù)據(jù)比從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)更有意義。

          例如:如果一條推文變得病毒式傳播,所有客戶端都會(huì)嘗試獲取同一條推文的數(shù)據(jù)。 由于 Twitter 擁有數(shù)百萬(wàn)用戶,因此使用緩存將節(jié)省數(shù)百萬(wàn)次對(duì)數(shù)據(jù)庫(kù)的調(diào)用。

          此外,緩存還可以減少數(shù)據(jù)庫(kù)的負(fù)載。 如果在Cache中找到數(shù)據(jù),就會(huì)節(jié)省數(shù)據(jù)庫(kù)調(diào)用,從而減少數(shù)據(jù)庫(kù)的壓力。 簡(jiǎn)單來(lái)說(shuō),你可以把Cache想象成一個(gè)存儲(chǔ)鍵值對(duì)的哈希表。

          下圖展示了從Cache中讀取數(shù)據(jù)的過(guò)程:


          緩存的核心概念

          TTL(生存時(shí)間)

          緩存中可以存儲(chǔ)的數(shù)據(jù)量是有限制的。 清除緩存中應(yīng)用程序服務(wù)器不再需要的條目至關(guān)重要。

          對(duì)于 Netflix,服務(wù)器會(huì)將最常觀看或熱門(mén)的節(jié)目緩存在緩存中。 它不需要存儲(chǔ)收視率隨著時(shí)間的推移而減少的節(jié)目。

          例如:緩存像《金錢(qián)搶劫》這樣的電視節(jié)目(在撰寫(xiě)本文時(shí))比緩存像《奪寶奇兵》這樣的電影更有意義。

          驅(qū)逐政策

          緩存可能會(huì)在某個(gè)時(shí)間點(diǎn)變滿,具體取決于應(yīng)用程序訪問(wèn)數(shù)據(jù)的方式。 因此,我們需要想出一種策略,將數(shù)據(jù)從緩存中刪除,并替換為將來(lái)更有可能被訪問(wèn)的數(shù)據(jù)。

          緩存驅(qū)逐策略有多種,例如LRU(最近最少使用)、LFU(最近最少使用)、MRU(最近最少使用)。 這些策略使用預(yù)定義的邏輯從緩存中逐出數(shù)據(jù)。 我們將在下一節(jié)中討論上述每一點(diǎn)。

          LRU(最近最少使用)

          此策略從緩存中刪除最近最少使用的條目。 一旦緩存變滿,最近最少使用的條目就會(huì)被逐出,而最近的條目將被添加到其中。

          您可以想象 Facebook 將名人的照片存儲(chǔ)在緩存中。 關(guān)注者的數(shù)據(jù)訪問(wèn)模式使得他們對(duì)最近的照片感興趣。 當(dāng)緩存已滿時(shí),它將踢出最近最少添加到其中的照片。

          LFU(最不常用)

          LFU 跟蹤數(shù)據(jù)項(xiàng)被訪問(wèn)的頻率或次數(shù)。 如果緩存大小超過(guò)給定閾值,它將逐出頻率最低的條目。

          當(dāng)您在發(fā)短信時(shí)輸入任何單詞時(shí),手機(jī)會(huì)開(kāi)始建議您選擇多個(gè)單詞,而不是輸入整個(gè)單詞。 在內(nèi)部,您的手機(jī)軟件會(huì)保存您輸入的所有單詞及其頻率的緩存。



          高速緩存稍后會(huì)逐出頻率最低的單詞。 如果多個(gè)單詞之間存在平局,則最近最少使用的單詞將被逐出。 在上面的手機(jī)示例中,如果您開(kāi)始使用“feature”、“features”、“feather”等詞語(yǔ),它將停止向您建議“feat”一詞(因?yàn)樵撛~將從緩存中清除)。

          MRU(最近使用)

          在 MRU 中,最近使用的條目將被刪除,并優(yōu)先考慮較舊的條目以保留在緩存中。 如果數(shù)據(jù)訪問(wèn)模式使得用戶不太可能查看最近的條目,則使用此策略進(jìn)行驅(qū)逐。 讓我們看一個(gè)例子。


          Tinder 等約會(huì)應(yīng)用程序通常會(huì)緩存用戶的所有潛在匹配項(xiàng)。 當(dāng)用戶向左或向右滑動(dòng)個(gè)人資料時(shí),應(yīng)用程序不應(yīng)再次向用戶推薦相同的個(gè)人資料。 如果發(fā)生這種情況,將會(huì)導(dǎo)致用戶體驗(yàn)不佳。

          有必要驅(qū)逐最近觀察到的條目。 應(yīng)用程序必須刪除向右或向左滑動(dòng)的配置文件的緩存條目。

          緩存類型

          通過(guò)緩存寫(xiě)入

          顧名思義,數(shù)據(jù)首先寫(xiě)入Cache,然后再寫(xiě)入數(shù)據(jù)庫(kù)。 這樣就保證了Cache中的數(shù)據(jù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)的一致性。 緩存上完成的每次讀取都遵循最近的寫(xiě)入操作。



          然而,這種方法的缺點(diǎn)是應(yīng)用程序?qū)懭胙舆t增加。 這種方法不適合寫(xiě)入量大的系統(tǒng)。 它對(duì)于在數(shù)據(jù)庫(kù)中持久保存數(shù)據(jù)后頻繁重新讀取數(shù)據(jù)的應(yīng)用程序非常有用。 寫(xiě)入延遲可能會(huì)受到影響,但可以通過(guò)較低的讀取延遲和一致性來(lái)補(bǔ)償。

          回寫(xiě)緩存

          從上面可以看出,通過(guò)緩存寫(xiě)入不適用于寫(xiě)入密集型系統(tǒng),因?yàn)檠舆t可能會(huì)增加。 另一種方法是先將數(shù)據(jù)寫(xiě)入緩存并將數(shù)據(jù)標(biāo)記為已修改(稍后在數(shù)據(jù)庫(kù)中更新)。

          異步作業(yè)可以定期讀取緩存中所有修改的條目并更新數(shù)據(jù)庫(kù)中相應(yīng)的值。 這種方法既不會(huì)影響讀取延遲,也不會(huì)影響寫(xiě)入延遲。 唯一的缺點(diǎn)是由于緩存和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步會(huì)存在延遲。 由于數(shù)據(jù)庫(kù)是事實(shí)來(lái)源,任何從數(shù)據(jù)庫(kù)讀取的應(yīng)用程序都會(huì)讀取過(guò)時(shí)的條目。

          YouTube 等網(wǎng)站使用寫(xiě)回緩存來(lái)存儲(chǔ)任何視頻的觀看次數(shù)。 為病毒式視頻的每個(gè)觀看次數(shù)更新數(shù)據(jù)庫(kù)的成本高昂。 將數(shù)據(jù)寫(xiě)入緩存,然后同步到DB中是一個(gè)更好的解決方案。 使用回寫(xiě)式緩存可確保低讀/寫(xiě)延遲。

          圍繞緩存寫(xiě)入

          很少有后端應(yīng)用程序不經(jīng)常重新讀取最新數(shù)據(jù)。 在這種情況下,使用 Write around Cache。



          在此策略中,更新數(shù)據(jù)庫(kù)而不寫(xiě)入緩存。 這不會(huì)向緩存加載不會(huì)被重新讀取的數(shù)據(jù)。 如果應(yīng)用程序開(kāi)始查詢最新數(shù)據(jù),則會(huì)導(dǎo)致緩存未命中。

          分布式系統(tǒng)中使用的緩存示例

          以下是開(kāi)源內(nèi)存緩存產(chǎn)品列表

          • Redis
          • Memcached
          • VoltDB
          • Aerospike DBS
          • Apache Ignite

          一篇文章介紹的是《瀏覽器緩存機(jī)制》,瀏覽器緩存是瀏覽器保存數(shù)據(jù)用于快速讀取或避免請(qǐng)求重復(fù)資源,提升網(wǎng)頁(yè)加載速度。緩存的數(shù)據(jù)到底放哪了呢?作為開(kāi)發(fā)者,有時(shí)也需要檢查一下緩存中的內(nèi)容。所以介紹下緩存方法以及緩存內(nèi)容在哪查找?

          1、http 緩存

          http緩存是存在于服務(wù)器與瀏覽器之間,是一種保存資源副本并在下次請(qǐng)求時(shí)直接使用該副本的技術(shù)。web緩存發(fā)現(xiàn)請(qǐng)求資源已經(jīng)被存儲(chǔ),它會(huì)攔截請(qǐng)求,返回資源副本,而不會(huì)去服務(wù)器重新請(qǐng)求資源。

          具體的緩存設(shè)置,如何判斷是否有緩存?等,上一篇文章以詳細(xì)介紹,可點(diǎn)擊《瀏覽器緩存機(jī)制》查看。

          打開(kāi)瀏覽器調(diào)試模式,在 Application 右側(cè)就會(huì)有瀏覽器的 8 種緩存方式,具體如下:

          2、websql

          websql是較新的chrome瀏覽器支持,并以獨(dú)立規(guī)范形式出現(xiàn),引入了一組使用 SQL 操作客戶端數(shù)據(jù)庫(kù)的 APIs。websql主要特點(diǎn):

          • Web Sql數(shù)據(jù)庫(kù) API 不是HTML5的一部分,在H5之前就已經(jīng)存在了。
          • 將數(shù)據(jù)以數(shù)據(jù)庫(kù)的形式存儲(chǔ)在客戶端,按需讀取。
          • 數(shù)據(jù)便于檢索,允許使用sql語(yǔ)句。
          • 可以使瀏覽器實(shí)現(xiàn)小型數(shù)據(jù)庫(kù)存儲(chǔ)功能。

          websql常用的API如下:

          openDatabase - 打開(kāi)已存在的數(shù)據(jù)庫(kù),如果不存在,則會(huì)新建一個(gè)新的數(shù)據(jù)庫(kù)。
          transaction - 控制一個(gè)事物,以及這種情況執(zhí)行提交或者回滾。
          executeSql - 執(zhí)行 SQL 語(yǔ)句。

          3、indexDB

          indexDB 是為了能夠在客戶端存儲(chǔ)客觀數(shù)量的結(jié)構(gòu)化數(shù)據(jù),并且在這些數(shù)據(jù)上使用索引進(jìn)行高性能的檢索。DOM存儲(chǔ)對(duì)于少量數(shù)據(jù)是非常友好的,但不適合存儲(chǔ)大量結(jié)構(gòu)化數(shù)據(jù),indexDB就是為了解決這個(gè)問(wèn)題而生的。

          indexDB 分別為同步和異步訪問(wèn)提供了單獨(dú)的API,同步API本打算供Web Worker內(nèi)部使用,但目前還未實(shí)現(xiàn)。異步API在Web Worker內(nèi)部和外部都可以使用,另外瀏覽器對(duì)indexDB有50M大小限制。

          indexDB主要特點(diǎn)有:

          • indexDB大小取決于你的硬盤(pán),存儲(chǔ)的數(shù)據(jù)量非常大。
          • 可以直接存儲(chǔ)任何類型的數(shù)據(jù),如 js任何類型的數(shù)據(jù) 、blob流。
          • 可以創(chuàng)建索引,提供高性能搜索功能。
          • 采用事務(wù),保證數(shù)據(jù)的準(zhǔn)確性和一致性。

          4、cookie

          cookie指的就是會(huì)話跟蹤技術(shù)。一般指網(wǎng)站為了辨別用戶身份,進(jìn)行session跟蹤而而存儲(chǔ)在用戶本地終端上的數(shù)據(jù),cookie一般通過(guò)http請(qǐng)求頭發(fā)送到服務(wù)器。cookie主要特點(diǎn)有:

          • 跨域限制,同一個(gè)域名下可多個(gè)網(wǎng)頁(yè)內(nèi)使用。
          • cookie可以設(shè)置有效期,超出有效期自動(dòng)清除。
          • cookie存儲(chǔ)大小在4K以內(nèi)。
          • cookie的存儲(chǔ)不能超過(guò)50個(gè)cookie。
          • 只能存儲(chǔ)字符串類型。

          cookie常用操作:

          setMaxAge - 設(shè)置cookie的有效期,時(shí)間單位是秒,負(fù)值時(shí)表示關(guān)閉瀏覽器后就失效,默認(rèn)值為-1。
          setDomain - 用于指定,只有請(qǐng)求指定域名才會(huì)帶上該cookie。
          setPath - 只有訪問(wèn)該域名下的cookieDemo的這個(gè)路徑地址才會(huì)帶cookie。
          setValue - 重置 value 。

          5、localstorage

          localStorage 是HTML5的一種新的本地緩存方案,目前使用比較多,一般存儲(chǔ)ajax返回的數(shù)據(jù),存儲(chǔ)特點(diǎn)主要有:

          • 數(shù)據(jù)可以長(zhǎng)久保存,沒(méi)有有效期,直到手動(dòng)刪除為止。
          • 存儲(chǔ)的數(shù)據(jù)量大,一般5M以內(nèi)。
          • 存儲(chǔ)的數(shù)據(jù)可以在同一個(gè)瀏覽器的多個(gè)窗口使用。
          • 存儲(chǔ)的數(shù)據(jù)不會(huì)發(fā)送到服務(wù)器。

          localStroage常用API如下:

          localStorage.setItem(key,value) // 保存數(shù)據(jù)
          localStorage.getItem(key) // 獲取數(shù)據(jù)
          localStorage.removeItem(key) // 刪除單個(gè)數(shù)據(jù)
          localStorage.clear() // 刪除全部

          6、sessionstorage

          sessionStorage與上述localStroage類似,它的特點(diǎn)主要有:

          • 存儲(chǔ)的數(shù)據(jù)在瀏覽器關(guān)閉后刪除,與網(wǎng)頁(yè)窗口具有相同的生命周期。
          • 可以存儲(chǔ)的數(shù)據(jù)大小5M。
          • 存儲(chǔ)的數(shù)據(jù)不會(huì)發(fā)送到服務(wù)器。

          sessionStorage常用API如下:

          sessionStorage.setItem(key,value) // 保存數(shù)據(jù)
          sessionStorage.getItem(key) // 獲取數(shù)據(jù)
          sessionStorage.removeItem(key) // 刪除單個(gè)數(shù)據(jù)
          sessionStorage.clear() // 刪除全部

          7、application cache

          application cache是離線緩存技術(shù),將大部分的圖片、js、css等資源放在mainfest文件配置中,頁(yè)面打開(kāi)時(shí)通過(guò)mainfest文件讀取本地文件或請(qǐng)求服務(wù)器資源。通常用于靜態(tài)頁(yè)面的緩存。

          application cache特點(diǎn):

          • mainfest文件必須有變化時(shí)才會(huì)更新。
          • 一次必須更新mainfest文件中的所有文件才能生效。
          • 當(dāng)網(wǎng)絡(luò)斷開(kāi)時(shí),可以繼續(xù)訪問(wèn)頁(yè)面。
          • 文件緩存到本地,不需要每次都從網(wǎng)絡(luò)上請(qǐng)求。
          • 穩(wěn)定性比較好,遇網(wǎng)絡(luò)故障或服務(wù)器故障可以繼續(xù)訪問(wèn)本地緩存。
          • 加載速度快,緩存資源為本地資源,因此加載速度較快。

          8、cacheStorage

          cacheStorage 表示 cache對(duì)象的存儲(chǔ)。該接口提供 serviceWorker 或其他類型的工作線程或window范圍訪問(wèn)的所有命名緩存的主目錄。

          CacheStorage常見(jiàn)方法:

          • CacheStorage.match() - 檢查給定的 Request 對(duì)象是否是 CacheStorage 對(duì)象跟蹤的 Cache 對(duì)象中的鍵,返回Promise
          • CacheStorage.has() - 返回一個(gè) Promise,它解析為與 cacheName 相匹配的 Cache 對(duì)象。
          • CacheStorage.delete() - 刪除cache對(duì)象
          • CacheStorage.keys() - 含有keys中字符串的任意一個(gè),則返回一個(gè)promise對(duì)象。
          • cacheStorage.has() - 如果包含cache對(duì)象,則返回一個(gè)promise對(duì)象。

          9、flash緩存

          flash緩存也是頁(yè)面通過(guò)js調(diào)用flash讀寫(xiě)特定的磁盤(pán)目錄,達(dá)到本地?cái)?shù)據(jù)緩存的目的。這是要基于flash的,所以基本不用。


          主站蜘蛛池模板: 久久精品黄AA片一区二区三区| 国产视频福利一区| 男插女高潮一区二区| 波多野结衣一区二区三区aV高清| 国产AV午夜精品一区二区入口| 曰韩人妻无码一区二区三区综合部| 久久久国产精品无码一区二区三区| 无码人妻AⅤ一区二区三区| 精品一区精品二区| 亚洲日韩中文字幕一区| 日韩精品一区二区三区中文字幕| 亚洲高清成人一区二区三区| 夜色福利一区二区三区| 日韩精品人妻av一区二区三区| 一区二区三区福利视频| 色欲AV无码一区二区三区| 亚洲综合激情五月色一区| 国产精品亚洲一区二区麻豆| 亚洲综合在线成人一区| 亚洲欧洲无码一区二区三区| 99精品国产高清一区二区| 无码国产精品一区二区免费3p| 国产在线精品一区二区在线观看| 亚洲欧洲日韩国产一区二区三区| 国产伦精品一区二区三区免.费| 在线观看午夜亚洲一区| 91精品一区二区三区久久久久| 怡红院一区二区三区| 久久99国产精品一区二区| 日本一区二区三区爆乳| 精品一区二区三区在线视频观看| 精品亚洲一区二区三区在线播放| 无码中文人妻在线一区二区三区 | 久久se精品一区精品二区国产| 精品一区二区三区高清免费观看| 无码人妻一区二区三区兔费| 国产精品无码一区二区在线观一 | 无码人妻一区二区三区在线| 成人免费视频一区| 精品欧洲av无码一区二区三区| 国产午夜精品片一区二区三区|