使用網路儲存

2021-10-05 14:01:44 字數 3660 閱讀 1051

歡迎閱讀小型domstorage()函式系列中的另一篇文章,在此,我想向您展示乙個名為domstorage()的簡潔抽象,它提供了一組與web storage互動的便捷函式,同時可以離散地處理所有最常見的要點。失敗。

如果您還不熟悉web儲存(又名dom儲存),則建議您閱讀colin ihrig的文章: web儲存api概述 。

這是domstorage()函式的**:

function domstorage(persist)

} catch(ex)

return

, write : function(key, value)

catch(ex)

}, erase : function(key)

, keys : function()

return keys;

}, clear : function()

catch(ex) }};

}

domstorage()函式返回乙個物件,該物件包含可以用作諸如讀取和寫入值之類的快捷方式的方法。 但是,如果不支援web儲存或在瀏覽器中將其禁用,則domstorage()函式將返回null。 首先呼叫domstorage()並儲存它返回的引用,如下所示。

var storage = domstorage();
預設情況下,該函式建立對會話儲存的引用-資料將在瀏覽器會話結束時自動刪除。 您還可以通過傳遞布林值true來選擇永續性儲存,如下所示。 在這種情況下,資料將一直保留到您或使用者刪除它為止。

var storage = domstorage(true);
有了storage引用後,應在嘗試使用其方法之前測試它是否為null

var storage = domstorage();

if(storage !== null)

主要方法是具有單個key引數的read()和具有keyvaluewrite()。 儲存互動是同步的,因此您可以在寫入值後立即讀取它:

storage.write("key", "value");

storage.read("key");

所有儲存的值都是字串,任何其他資料型別都將進行靜默轉換(例如123被儲存為"123")。 如果需要儲存複雜資料,最好的方法是將其另存為json字串:

storage.write("key", json.stringify(data));
如果成功,則read()write()方法都返回乙個字串,否則返回nullread()失敗意味著該鍵沒有儲存值,而write()失敗意味著未儲存該值。 只有根據瀏覽器首選項設定的配額,該值對於可用的剩餘儲存空間而言太大時才會發生,我們將在下一部分中討論。

if(storage.write("key", "value") === null)

還有兩種刪除方法,一種刪除單個值:

storage.erase("key");
另乙個用於清除儲存物件中的每個值(請特別注意!):

storage.clear();
最後,對於儲存物件中當前定義的每個值,都有乙個keys()方法返回乙個字串鍵陣列:

var keys = storage.keys();
例如,您可以使用它來檢查儲存物件並找出其包含多少資料:

var size = 0,

keys = storage.keys();

for(var n = keys.length, i = 0; i < n; i ++)

alert((size / 1000).tofixed(2) + 'k');

本質上,domstorage()函式所做的全部工作就是定義一組快捷方法,但它也處理可能會導致錯誤的多個故障點。 第乙個也是最有可能發生的故障是在獲取對儲存物件本身的引用(根據persist引數指定為sessionstoragelocalstorage)時發生的。 可能不支援該儲存物件,但是即使支援該儲存物件,在引用該儲存物件時也可能會引發錯誤。 這是因為如果使用儲存會違反策略決定(例如被使用者禁用),則該規範允許瀏覽器丟擲安全錯誤。 因此,這是我們需要異常處理的第乙個地方,捕獲任何此類錯誤並為失敗返回null

try

}catch(ex)

下乙個潛在的失敗是在儲存值時,因為我們可以儲存多少資料受到限制。 瀏覽器設定配額,並且大多數瀏覽器還提供使用者偏好來進行調整。 據我所知,尚無可靠的方法以程式設計方式確定配額是多少,但這通常綽綽有餘2-5mb,具體取決於瀏覽器。 如果儲存的值將超過該配額,則瀏覽器將引發另乙個錯誤。 因此,我們處理該問題並為失敗返回null

try

catch(ex)

您會注意到,我使用方括號表示法而不是setitem()函式,這只是為了方便在單個表示式中儲存和返回值,作為對此的替代方法:

try

catch(ex)

失敗的最後一點是使用clear()函式時,因為某些早期的實現不支援它(例如firefox 3)。 為了避免在這些實現中引發錯誤,我們再次使用異常處理,然後返回truefalse表示成功:

try

catch(ex)

如果您確實確實需要此功能在較舊的實現中工作,則可以通過使用keys()方法來完成相同的事情很簡單–遍歷返回的鍵並手動擦除每個值:

if(storage.clear() === false)

}

請注意,firefox 2-3對web storage的支援有限-除了缺少對clear()支援之外,它們根本不支援localstorage,僅支援sessionstorage。 值得注意的是ie7根本不支援web儲存。 ie8確實支援它,即使是在相容模式下也給人以錯誤的印象,即ie7也支援它。

domstorage()成為有用的抽象的原因是它無縫地處理這些不同故障點的方式。 它省去了重複檢查和測試並處理異常的麻煩,從而使簡單的任務(如讀寫)變得應有盡有!

from:

NAS網路儲存

nas network attached storage 網路儲存基於標準網路協議實現資料傳輸,為網路中的windows linux mac os 等各種不同作業系統的計算機提供檔案共享和資料備份。優點nas是通過網線連線的磁碟陣列,具備磁碟陣列的所有主要特徵 高容量 高效能 高可靠。1 nas 具...

ISCSI網路儲存盤的建立和使用

伺服器端 iscsi server 192.168.1.2 root iscsi server yum y install targetcli 安裝targetcli軟體包,用來搭建iscsi root iscsi server targetcli ls 檢視最初的配置情況 backstores b...

網路爬蟲(2) 儲存

目前我想到的儲存方案有兩種 單檔案單頁面儲存和單檔案多頁面儲存。單檔案單頁面儲存就是乙個頁面儲存在乙個檔案中,檔名稱可以使用頁面編號doc id。這種方案查詢的時候容易定位,直接使用檔名就可以,缺點是會產生大量瑣碎的檔案,管理 冗餘和查詢感覺都不太方便。單檔案多頁面儲存即乙個檔案儲存多個頁面,寫滿乙...