আশা করি এটি কারও সাহায্য করবে।
যেহেতু জ্যাসফিল্ডে জ্যাস-উদাহরণটি আমার পক্ষে কাজ করে না আমি এই সমাধানটি নিয়ে এসেছি। (আমি নীচের কোডটিতে ব্যবহৃত বিটগুলির জন্য সার্জ সেলেটস্কি এবং শৌরভকে ধন্যবাদ জানাই)
নীচে সেই ফাংশনটি ব্যবহার করা যেতে পারে যা লোকালস্টোরেজের জন্য কত স্থান উপলব্ধ এবং এটির জন্য (যদি কোনও কীগুলি ইতিমধ্যে এলএসে থাকে) কতটা জায়গা বাকি রয়েছে তা পরীক্ষা করতে ব্যবহার করা যেতে পারে।
এটি একটি সামান্য শক্তিশালী শক্তি তবে এটি ফায়ারফক্স বাদে প্রায় প্রতিটি ব্রাউজারে কাজ করে। ডেস্কটপ এফএফ এ এটি পুরো হতে বয়সগুলি (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) উভয়ই ক্র্যাশ করেছে
- ক্রোম 25.0.1364.169 ~ 22250ms / 5Mb
- নেটিভ (সাফারি 4.0 / Webkit534.30 হিসাবে চিহ্নিত) ~ 995ms / 5Mb
আইফোন 4 এস আইওএস 6.1.3
- সাফারি ~ 520ms / 5Mb
- হোম অ্যাপ হিসাবে ~ 525ms / 5Mb
- আইক্যাব ~ 710ms / 5 এমবি
ম্যাকবুক প্রো ওএসএক্স 1.8.3 (কোর 2 ডুও 2.66 8 জিবি মেমরি)
- সাফারি 6.0.3 ~ 105ms / 5Mb
- ক্রোম 26.0.1410.43 ~ 3400 মিমি / 5 এমবি
- ফায়ারফক্স 20.0 300150ms (!) / 10Mb (স্ক্রিপ্ট দীর্ঘকাল চলার অভিযোগ করার পরে)
আইপ্যাড 3 আইওএস 6.1.3
- সাফারি ~ 430ms / 5Mb
- আইক্যাব ~ 595ms / 5 এমবি
উইন্ডোজ 7 -64 বি (কোর 2 ডুও 2.93 6 জিবি মেমরি)
- সাফারি 5.1.7 ~ 80ms / 5Mb
- Chrome 26.0.1410.43 ~ 1220ms / 5Mb
- ফায়ারফক্স 20.0 228500 মিমি (!) / 10 এমবি (দীর্ঘকাল ধরে স্ক্রিপ্ট চলার অভিযোগ করার পরে)
- আইই 9 ~ 17900 মিমি / 9.54 এমবি (যদি কোনও কনসোল.লগ কোডে থাকে তবে ডেভটুলগুলি না খোলার আগে পর্যন্ত কাজ করে না)
- অপেরা 12.15 ~ 4212ms /3.55Mb (এটি 5Mb বাছাই করা হয়, তবে অপেরা চমত্কারভাবে জিজ্ঞাসা করে যে আমরা এলএসের পরিমাণ বাড়িয়ে তুলতে চাই, দুর্ভাগ্যক্রমে এটি ক্র্যাশ হয় যদি পর পর কয়েকবার পরীক্ষা নেওয়া হয়)
উইন 8 (সমান্তরাল 8 এর অধীনে)
- আইই 10 ~ 7850ms /9.54 এমবি