摘要:移動端緩存失效是我印象最深的一個之一,為啥呢,因為這個問題導(dǎo)致我加班到很晚。的生命周期是僅在當(dāng)前會話下有效。引入了一個瀏覽器窗口的概念,是在同源的窗口中始終存在的數(shù)據(jù)。
無bug,不程序:作為程序員的我,不是修bug就是在寫bug的路上。
移動端sessionStorage緩存失效是我“印象最深的一個bug”之一,為啥呢,因為這個問題導(dǎo)致我加班到很晚。在現(xiàn)在看來就是一個簡單的概念問題。
在我剛工作的時候,公司還沒有招到前端工程師,于是作為后端工程師的我開始了不怎么愉快地前端之旅,不知道大家是否理解自學(xué)新語言的苦,里面的坑簡直能讓人自閉。
作為我兼職前端的第一個bug:“移動端sessionStorage緩存失效”,沒錯,就是概念沒理解透,導(dǎo)致在App里面獲取后為null(這里的App是一個jQuery Mobile盒子套html),在PC端是正常的。
因為sessionStorage的生命周期是僅在當(dāng)前會話下有效,移動端切換頁面是關(guān)閉原頁面打開新頁面,知道sessionStorage特性的朋友看到這里是不是瞬間理解了?
解決方案,我們知道sessionStorage被清空的原因是:移動端切換頁面是關(guān)閉原頁面打開新頁面,因此,在做移動端的時候,可以采用localStorage保存數(shù)據(jù),使用完后再清空localStorage。
當(dāng)然,如果是在同一個頁面中,sessionStorage的使用是沒有任何問題的。
我們一起看一下sessionStorage和localStorage的概念,深入了解一下:
1、生命周期:localStorage的生命周期是永久的,關(guān)閉頁面或瀏覽器之后localStorage中的數(shù)據(jù)也不會消失。localStorage除非主動刪除數(shù)據(jù),否則數(shù)據(jù)永遠(yuǎn)不會消失。
? ? ? ? ?sessionStorage的生命周期是僅在當(dāng)前會話下有效。sessionStorage引入了一個“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)。
只要這個瀏覽器窗口沒有關(guān)閉,即使刷新頁面或者進(jìn)入同源另一個頁面,數(shù)據(jù)依然存在。但是sessionStorage在關(guān)閉了瀏覽器窗口后就會被銷毀。同時獨立的打開同一個窗口同一個頁面,sessionStorage也是不一樣的。
2、存儲大小:localStorage和sessionStorage的存儲數(shù)據(jù)大小一般都是:5MB。
3、存儲位置:localStorage和sessionStorage都保存在客戶端,不與服務(wù)器進(jìn)行交互通信。
4、存儲內(nèi)容類型:localStorage和sessionStorage只能存儲字符串類型,對于復(fù)雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理。
5、獲取方式:localStorage:localStorage.getItem("key");;sessionStorage:sessionStorage.getItem("key")。
6、應(yīng)用場景:localStorage:常用于長期登錄(+判斷用戶是否已登錄),適合長期保存在本地的數(shù)據(jù)。sessionStorage:敏感賬號一次性登錄;
?
看到這里是不是感覺很簡單,換成localStorage就可以了,正所謂“會者不難難者不會”,當(dāng)時的我剛剛轉(zhuǎn)換學(xué)習(xí)前端,很多概念沒理解透導(dǎo)致一些前端問題頻繁出現(xiàn)。
我們簡單看一下寫入和讀取方式:
//寫入緩存localStorage.setItem("key", "value");//獲取緩存 localStorage.getItem("key");//寫入緩存sessionStorage.setItem("key", "value");//獲取緩存sessionStorage.getItem("key");
?
? 歡迎關(guān)注訂閱微信公眾號【熊澤有話說】,更多好玩易學(xué)知識等你來取 作者:熊澤-學(xué)習(xí)中的苦與樂 公眾號:熊澤有話說 出處:?https://www.cnblogs.com/xiongze520/p/15568939.html 您可以隨意轉(zhuǎn)載、摘錄,但請在文章內(nèi)注明作者和原文鏈接。 ? ? |
?
?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123764.html
摘要:最近的一次更新的變量有效,并且會作用于全部的引用的處理方式和相同,變量值輸出時根據(jù)之前最近的一次定義計算,每次引用最近的定義有效嵌套三種預(yù)編譯器的選擇器嵌套在使用上來說沒有任何區(qū)別,甚至連引用父級選擇器的標(biāo)記也相同。 面試匯總一:2018大廠高級前端面試題匯總 高級面試:【半月刊】前端高頻面試題及答案匯總 css內(nèi)容 響應(yīng)式布局 當(dāng)前主流的三種預(yù)編譯器比較 CSS預(yù)處理器用一種專門的...
摘要:使用方法與相同存儲讀取刪除刪除所有刪除某個兼容性與都支持,大部分瀏覽器都支持六是在瀏覽器保存結(jié)構(gòu)化數(shù)據(jù)中的一種數(shù)據(jù)庫。所以是為了可以在客戶端存儲大量的結(jié)構(gòu)化數(shù)據(jù)而存在的,并且使用索引高效檢索的。 前言 瀏覽器緩存就是把一個請求過的web資源,存儲在瀏覽器中。等下次在訪問相同的請求時,緩存會根據(jù)緩存機(jī)制去決定要不要向服務(wù)器發(fā)送請求,或者直接用緩存的資源響應(yīng)訪問。 瀏覽器緩存一般包含有 1...
摘要:根據(jù)標(biāo)準(zhǔn),到目前為止,一共有種緩存機(jī)制,有些是之前已有,有些是才新加入的。首次請求緩存有效期內(nèi)請求緩存過期后請求一般瀏覽器會將緩存記錄及緩存文件存在本地文件夾中。 騰訊 Bugly 特約作者:賀輝超 1. H5 緩存機(jī)制介紹 H5,即 HTML5,是新一代的 HTML 標(biāo)準(zhǔn),加入很多新的特性。離線存儲(也可稱為緩存機(jī)制)是其中一個非常重要的特性。H5 引入的離線存儲,這意味著 web ...
摘要:最近學(xué)習(xí)了本地存儲幾種方式各自的特點和區(qū)別,遂記錄下來,以加深印象。是服務(wù)器種植在客戶端的形式文本文件。這也是限制大小的原因。保存在客戶端,不隨著請求發(fā)送給服務(wù)器,避免了流量的浪費。存儲的信息是會話級別的,同域也是不能共享的。 最近學(xué)習(xí)了本地存儲幾種方式各自的特點和區(qū)別,遂記錄下來,以加深印象。 一、cookie cookie算是比較早的技術(shù),最初是為了記錄http的狀態(tài),提高訪問速度...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2578·2019-08-29 15:33
閱讀 1086·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1143·2019-08-29 10:59