搜尋
首頁web前端js教程HTML5本地存儲重新審視

HTML5本地存儲重新審視

鑰匙要點

    Web Storage API的一部分
  • HTML5本地存儲允許在瀏覽器中存儲數據存儲,其容量為2MB至10MB,具體取決於瀏覽器,協議,端口和頂級域。與cookie不同,此數據未發送回服務器,並在會話和設備之間持續持續。
  • >
  • >由於本地存儲的同步性可能會受到性能,但它的速度可能比移動設備上的本機緩存更快。為了優化性能,建議限制讀取,僅在窗口之後訪問本地存儲。
  • >並非所有瀏覽器都支持在私人或隱身模式下本地存儲中設置項目,在某些情況下,退出後,以私有模式存儲的數據被清除。為了確保安全使用本地存儲,建議不僅要測試支持,還建議獲得和設置物品的能力。 >
>本地存儲是HTML5 Web Storage API的一部分,它允許您將數據存儲在瀏覽器中。與cookie不同,使用本地存儲存儲的數據不會發送回服務器。所有數據都停留在客戶端上,您當前可以存儲從2MB到10MB。此限制與使用的特定瀏覽器,協議(HTTP或HTTPS),端口和最高級別域相關。 > 在本文中,我們將討論如何使用此API來提高網站的性能。我會假設您知道什麼是本地存儲和暴露的方法,但是如果您需要復習,我建議您閱讀Colin Ihrig的Web Storage API概述。

可用的磁盤空間

>在開始討論本地存儲之前,我想概述大型移動設備和桌面瀏覽器中可用的磁盤空間。以下表是基於文章“在移動瀏覽器上使用配額”。

移動瀏覽器:

瀏覽器 chrome android瀏覽器 firefox > ios Safari 版本 40 4.3 34 6-8 可用空間 10MB 2MB 10MB 5MB 桌面瀏覽器:

瀏覽器 chrome > Opera firefox > Safari > Internet Explorer 版本 40 27 34 6-8 9-11 可用空間 10MB 10MB 10MB 5MB 10MB >本機緩存vs本地存儲

使用本地存儲時,您的數據將留在客戶端上,並在會話和設備重新啟動之間持續存在。正如我在簡介中提到的那樣,本地存儲API的限制與特定瀏覽器(如上一個表中所示),協議,端口和最高級別域相關。相比之下,瀏覽器本機緩存上可用的空間在網站上共享,並且在移動設備上較小。它經常被沖洗,有時甚至在同一訪問中。移動設備還有一個其他問題:它們不如桌面設備強大,因此必須實現良好的性能。

>關於本地存儲性能的討論很多。例如,以前與莫齊拉(Mozilla)一起寫的克里斯蒂安·海爾曼(Christian Heilmann)寫道:“沒有簡單的解決方案用於本地存儲”。如果不仔細使用,本地存儲可能會受到性能的打擊。您需要考慮的第一件事是它是同步API,因此它阻止了主UI線程。本地存儲寫入並讀取來自硬盤驅動器的數據,這比從內存中閱讀要貴得多。為了使您訪問數據,本地存儲需要從磁盤中讀取數據,這就是性能命中的地方。這種性能命中並不是少量數據的主要問題,但是使用完整的存儲限制可以很明顯。

作為一個很好的做法,您應該嘗試執行盡可能少的讀取。另外,由於我們正在處理同步API,因此您應該嘗試僅在窗口啟動窗口後才從本地存儲中讀取數據,以避免阻止UI線程。

事物已經改變

>但是情況越來越好。 Mobify的Peter McLachlan發表的一篇文章解釋說,本地存儲的速度比移動設備上的本機緩存快5倍。

在同一篇文章的附錄中,您可以看到移動瀏覽器上本地存儲的性能的演變以及它的改進程度。您還可以看到本地存儲始終比本機緩存更快。

誰在使用本地存儲?

>

>最近有一些網站使用本地存儲來緩存資產,例如使用本地存儲進行關鍵路徑CSS的監護人。您可以在2014年速度會議上查看此演示文稿,以了解他們如何做到這一點。

>最近也開始在本地存儲中加入Web字體。在本文有關最近在其網站上實施的一些績效改進的文章中,他們報告了推遲的網絡字體並將其緩存在當地存儲中,這導致了最有效的改進。

>

私有瀏覽的註釋

如Caniuse.com在“標籤已知問題”上報導的,在以私有或隱身模式運行時,Safari,ios Safari和Android瀏覽器不支持在本地存儲中設置項目。

>

>其他瀏覽器(例如Chrome和Firefox)允許您在私有模式下將數據存儲在本地存儲中,但是當您退出專用模式時,將清除數據。這是由於隱私問題造成的,因為在私有模式下,有人可能會使用持久數據來了解用戶的操作。

如果預計將在隨後的訪問中出現在上一個會話下的值下,則此問題可能會破壞您的應用程序的行為。因此,為了安全地使用本地存儲,這不僅是測試支持的好習慣,而且是測試獲取和設置項目的能力。

>

>有關在私有模式下的本地存儲行為以及如何在不同瀏覽器中查看本地存儲內容的更多信息,您可以使用“在測試時不要忘記檢查私人瀏覽模式”作為參考。

>

結論

也許是時候開始重新審視本地存儲及其潛在用途了,尤其是在可以使用它來避免延遲瓶頸的移動設備上。我們可以開始考慮緩存我們的資產的新方法,然後立即將其提供給我們的用戶。我們已經看到已經以非常規的方式成功實現了本地存儲使用。

經常詢問有關HTML5本地存儲的問題(常見問題解答)

> HTML5本地存儲的最大存儲限制是多少?但是,大多數現代瀏覽器每個域提供約5MB的存儲空間。這明顯大於cookie提供的4KB(約4096個字節)。重要的是要注意,此存儲是每個域,而不是每個本地存儲對象。 >如何檢查瀏覽器是否支持HTML5本地存儲?

>您可以通過在JavaScript中使用“ IN”運算符來檢查瀏覽器是否支持HTML5本地存儲。這是一個簡單的代碼段,檢查本地存儲支持:

if(window && window中的'localStorage'&& window ['localStorage']!== null){ //支持本地存儲
> } else {
//不支持本地存儲
}

}

>如何從HTML5本地存儲中清除數據?

>您可以使用clear()方法從HTML5本地存儲中清除數據。此方法從當前域的本地存儲中刪除了所有鍵值對。這是一個簡單的代碼片段:

localstorage.clear();

>我可以存儲對像或數組中的html5 local Storage中嗎?

是的,您可以將對像或數組存儲在HTML5本地存儲。但是,本地存儲僅支持字符串鍵值對。因此,您需要在存儲之前使用json.stringify()將對像或數組轉換為字符串,然後在檢索時使用json.parse()將其轉換回對像或數組。本地存儲和會話存儲之間的區別?

>本地存儲和會話存儲之間的主要區別在於其壽命和範圍。即使關閉瀏覽器並重新打開瀏覽器,本地存儲中的數據仍然存在,而頁面會話結束時會話存儲中的數據將被清除,即當關閉瀏覽器時。 >我如何迭代本地中的所有值存儲?

您可以使用簡單的循環與localstorage.key()方法和localStorage.getItem()結合使用for Loop()迭代本地存儲中的所有值方法。

>可以在子域之間共享本地存儲嗎?

不,不,在子域之間無法共享本地存儲。每個子域都有其自己的獨立本地存儲。

可以在不同的瀏覽器之間傳輸本地存儲數據嗎?

不,不能在不同的瀏覽器之間傳輸本地存儲數據。每個瀏覽器都有其自己的獨立本地存儲。

>

>如何處理本地存儲配額超過錯誤?

當超​​過本地存儲配額時,拋出了quota_exceeded_err異常。您可以通過將其捕獲在試用塊中並採取適當的措施來處理此異常,例如清除某些空間或通知用戶。

>

以上是HTML5本地存儲重新審視的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具