Karena localStorage
(saat ini) hanya mendukung string sebagai nilai-nilai, dan untuk melakukan itu objek-objek tersebut perlu dirubah (disimpan sebagai JSON-string) sebelum dapat disimpan, apakah ada batasan yang ditentukan mengenai panjang nilai.
Adakah yang tahu kalau ada definisi yang berlaku untuk semua browser?
javascript
html
local-storage
Codekie
sumber
sumber
Jawaban:
Mengutip dari artikel Wikipedia tentang Penyimpanan Web :
Dan juga mengutip dari artikel John Resig [diposting Januari 2007]:
sumber
domain
(origin
) dapat menyimpan 5MB pada setiap klien. Data disimpan di mesin klien - sama sekali tidaklocalStorage
mekanisme berinteraksi di klien.http://example.com
danhttps://example.com
bukan asal yang sama (skema berbeda).http://example.com
danhttp://www.example.com
bukan asal yang sama (host berbeda).http://example.com
danhttp://example.com:8080
bukan asal yang sama (port yang berbeda). HTH. :-)Sebenarnya Opera tidak memiliki batas 5MB. Ia menawarkan untuk meningkatkan batas karena aplikasi membutuhkan lebih banyak. Pengguna bahkan dapat memilih "Penyimpanan tidak terbatas" untuk domain.
Anda dapat dengan mudah menguji batas penyimpanan / kuota local sendiri.
sumber
UCS-2
. Meskipun mirip denganUFT16
ada beberapa perbedaan yang sangat penting ... sebagian besar berputar di sekitar fakta bahwa UCS-2 mendahului UFT.Berikut ini skrip sederhana untuk mengetahui batasnya:
Inilah intisari , JSFiddle dan posting blog .
Script akan menguji pengaturan string teks yang semakin besar hingga browser melempar dan pengecualian. Pada titik itu akan menghapus data uji dan menetapkan kunci ukuran di penyimpanan lokal menyimpan ukuran dalam kilobyte.
sumber
Temukan panjang maksimum satu string yang dapat disimpan
localStorage
Cuplikan ini akan menemukan panjang maksimum String yang dapat disimpan dalam
localStorage
per domain.Perhatikan bahwa panjang string dibatasi dalam JavaScript; jika Anda ingin melihat jumlah maksimum data yang dapat disimpan
localStorage
ketika tidak terbatas pada satu string, Anda dapat menggunakan kode dalam jawaban ini .Sunting: Potongan Stack tidak mendukung
localStorage
, jadi di sini ada tautan ke JSFiddle .Hasil
Chrome (45.0.2454.101): 5242878 karakter
Firefox (40.0.1): 5242883 karakter
Internet Explorer (11.0.9600.18036) :
16386122066122070 karakterSaya mendapatkan hasil berbeda pada setiap proses di Internet Explorer.
sumber
Browser seluler:
Browser desktop:
Tautan Referensi
sumber
Jangan berasumsi 5MB tersedia - kapasitas penyimpanan lokal bervariasi berdasarkan browser, dengan 2,5MB, 5MB, dan tidak terbatas adalah nilai yang paling umum. Sumber: http://dev-test.nemikor.com/web-storage/support-test/
sumber
Anda tidak ingin merangkai objek besar menjadi satu entri Penyimpanan lokal. Itu akan sangat tidak efisien - semuanya harus diurai dan dikodekan ulang setiap kali beberapa perubahan detail kecil. Juga, JSON tidak dapat menangani banyak referensi silang dalam struktur objek dan menghapus banyak detail, misalnya konstruktor, properti array non-numerik, apa yang ada di entri jarang, dll.
Sebagai gantinya, Anda bisa menggunakan Rhaboo . Ini menyimpan objek besar menggunakan banyak entri Penyimpanan lokal sehingga Anda dapat membuat perubahan kecil dengan cepat. Objek yang dipulihkan adalah salinan yang jauh lebih akurat dari yang disimpan dan API sangat sederhana. Misalnya:
BTW, saya menulisnya.
sumber
Saya melakukan hal berikut:
sumber
Saya sangat suka jawaban cdmckay , tetapi tidak terlalu bagus untuk memeriksa ukuran secara real time: terlalu lambat (2 detik untuk saya). Ini adalah versi yang disempurnakan, yang jauh lebih cepat dan lebih tepat, juga dengan opsi untuk memilih seberapa besar kesalahan (standar
250,000
, semakin kecil kesalahan - semakin lama perhitungannya):Untuk mengetes:
Ini bekerja lebih cepat secara dramatis untuk kesalahan standar; juga bisa jauh lebih tepat jika diperlukan.
sumber
Saya telah menyingkat tes biner ke fungsi ini yang saya gunakan:
Itu juga mencadangkan konten sebelum pengujian, kemudian mengembalikannya.
Cara kerjanya: Ini menggandakan ukuran sampai batas tercapai atau tes gagal. Kemudian menyimpan setengah jarak antara rendah dan tinggi dan mengurangi / menambah setengah dari setiap kali (kurangi pada kegagalan dan tambahkan pada keberhasilan); mengasah ke nilai yang tepat.
upperLimit
adalah 1GB secara default, dan hanya membatasi seberapa jauh untuk memindai secara eksponensial sebelum memulai pencarian biner. Saya ragu ini bahkan perlu diubah, tapi saya selalu berpikir ke depan. ;)Di Chrome:
IE11, Edge, dan FireFox juga melaporkan ukuran maks yang sama (10485762 bytes).
sumber
localStorage.Clear()
sebelum dan sesudah pengujian AndaAnda dapat menggunakan kode berikut di browser modern untuk secara efisien memeriksa kuota penyimpanan (total & bekas) secara real-time:
sumber
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
Itu salah: ukuran total yang mungkin sebenarnya 10485762.Setelah saya mengembangkan ekstensi Chrome (browser desktop) dan menguji ukuran maksimum penyimpanan asli karena alasan ini.
Hasil saya:
Lebih dari
10240 KB
penggunaan mengembalikan saya kesalahan:sumber
Saya menulis kode sederhana ini yang menguji ukuran localStorage dalam byte.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Halaman Github:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
Saya memiliki hasil yang sama pada chrome desktop, opera, firefox, berani dan mobile chrome yang ~ 5Mbytes
Dan setengahnya lebih kecil menghasilkan safari ~ 2Mbytes
sumber