आशा है कि यह किसी की मदद करेंगे।
क्योंकि जैस- jsfiddle पर उदाहरण मेरे लिए काम नहीं करता है मैं इस समाधान के साथ आया हूं। (नीचे दिए गए कोड में इस्तेमाल किए गए अपने बिट्स के लिए सर्ज सेलेटस्की और शौरव के लिए धन्यवाद)
नीचे वह फ़ंक्शन है जिसका उपयोग यह जांचने के लिए किया जा सकता है कि लोकलस्टोरेज के लिए कितनी जगह उपलब्ध है और (यदि कोई कुंजी पहले से ही lS में है) तो कितनी जगह बची है।
यह थोड़ा क्रूर बल है, लेकिन यह फ़ायरफ़ॉक्स के अलावा लगभग हर ब्राउज़र में काम करता है। अच्छी तरह से डेस्कटॉप एफएफ में इसे पूरा करने में उम्र (4-5 मिनट) लगती है, और एंड्रॉइड पर यह बस दुर्घटनाग्रस्त हो जाता है।
फ़ंक्शन के नीचे, परीक्षणों का एक छोटा सारांश है जो मैंने विभिन्न प्लेटफार्मों पर विभिन्न ब्राउज़रों में किया है। का आनंद लें!
function testLocalStorage() {
var timeStart = Date.now();
var timeEnd, countKey, countValue, amountLeft, itemLength;
var occupied = leftCount = 3; //Shurav's comment on initial overhead
//create localStorage entries until localStorage is totally filled and browser issues a warning.
var i = 0;
while (!error) {
try {
//length of the 'value' was picked to be a compromise between speed and accuracy,
// the longer the 'value' the quicker script and result less accurate. This one is around 2Kb
localStorage.setItem('testKey' + i, '11111111112222222222333333333344444444445555555555666661111111111222222222233333333334444444444555555555566666');
} catch (e) {
var error = e;
}
i++;
}
//if the warning was issued - localStorage is full.
if (error) {
//iterate through all keys and values to count their length
for (var i = 0; i < localStorage.length; i++) {
countKey = localStorage.key(i);
countValue = localStorage.getItem(localStorage.key(i));
itemLength = countKey.length + countValue.length;
//if the key is one of our 'test' keys count it separately
if (countKey.indexOf("testKey") !== -1) {
leftCount = leftCount + itemLength;
}
//count all keys and their values
occupied = occupied + itemLength;
}
;
//all keys + values lenght recalculated to Mb
occupied = (((occupied * 16) / (8 * 1024)) / 1024).toFixed(2);
//if there are any other keys then our 'testKeys' it will show how much localStorage is left
amountLeft = occupied - (((leftCount * 16) / (8 * 1024)) / 1024).toFixed(2);
//iterate through all localStorage keys and remove 'testKeys'
Object.keys(localStorage).forEach(function(key) {
if (key.indexOf("testKey") !== -1) {
localStorage.removeItem(key);
}
});
}
//calculate execution time
var timeEnd = Date.now();
var time = timeEnd - timeStart;
//create message
var message = 'Finished in: ' + time + 'ms \n total localStorage: ' + occupied + 'Mb \n localStorage left: ' + amountLeft + "Mb";
//put the message on the screen
document.getElementById('scene').innerText = message; //this works with Chrome,Safari, Opera, IE
//document.getElementById('scene').textContent = message; //Required for Firefox to show messages
}
और जैसा कि विभिन्न ब्राउज़रों में कुछ परीक्षण के ऊपर वादा किया गया है:
गैलेक्सीटब 10.1
- मैक्सथन पैड 1.7 ~ 1130ms 5Mb
- फ़ायरफ़ॉक्स 20.0 (बीटा 20.0) दोनों दुर्घटनाग्रस्त हो गया
- Chrome 25.0.1364.169 ~ 22250ms / 5Mb
- मूल निवासी (सफारी 4.0 / Webkit534.30 के रूप में पहचान) ~ 995ms / 5Mb
iPhone 4 जी iOS 6.1.3
- सफारी ~ 520ms / 5Mb
- होमएप के रूप में ~ 525ms / 5Mb
- iCab ~ 710ms / 5mb
मैकबुक प्रो OSX 1.8.3 (कोर 2 डुओ 2.66 8 जीबी मेमोरी)
- सफारी 6.0.3 ~ 105ms / 5Mb
- Chrome 26.0.1410.43 ~ 3400ms / 5Mb
- फ़ायरफ़ॉक्स 20.0 300150ms (!) / 10Mb (लंबे समय तक चलने वाली स्क्रिप्ट के बारे में शिकायत के बाद)
iPad 3 iOS 6.1.3
- सफारी ~ 430ms / 5Mb
- iCab ~ 595ms / 5mb
विंडोज 7 -64 बी (कोर 2 डुओ 2.93 6 जीबी मेमोरी)
- सफारी 5.1.7 ~ 80ms / 5Mb
- Chrome 26.0.1410.43 ~ 1220ms / 5Mb
- फ़ायरफ़ॉक्स 20.0 228500ms (!) / 10Mb (लंबे समय तक चलने वाली स्क्रिप्ट के बारे में शिकायत के बाद)
- IE9 ~ 17900ms / 9.54Mb (यदि कोई कंसोल.लॉग कोड में काम नहीं करते हैं, जब तक कि DevTools दिखाई नहीं देते हैं)
- ओपेरा 12.15 ~ 4212ms / 3.55Mb (यह तब होता है जब 5Mb का चयन किया जाता है, लेकिन ओपेरा अच्छी तरह से पूछता है कि क्या हम lS की मात्रा बढ़ाना चाहते हैं, दुर्भाग्य से यह क्रैश हो जाता है यदि परीक्षण लगातार एक पंक्ति में कुछ बार आयोजित किया जाता है)
जीत 8 (समानताएं 8 के तहत)