I use localhost:3000
for a lot of different projects. It's the default port on create-react-app
's dev server. The browser profile remains but projects come and go. There's a lot of old stuff in there that I have no longer any memory of adding.
Working in a recent single page app, I tried to use localStorage
as a cache for some XHR requests and got: DOMException: "The quota has been exceeded."
.
Wat?! I'm only trying to store a ~250KB JSON string. Surely that's far away from the mythical 5MB limit. Do I really have to lzw
compress the string in and out to save room and pay for it in CPU cycles?
Better yet, find out what junk I still have in there.
Paste this into your Web Console (it's safe as milk):
Object.entries(localStorage).forEach(([k,v]) => console.log(k.padEnd(50), v.length, (v.length / 1024).toFixed(1) + 'KB'))
The output looks something like this:
Or, sorted and filtered a bit:
Object.entries(localStorage).sort((a, b) => b[1].length -a[1].length).slice(0,5).forEach(
([k,v]) => console.log(k.padEnd(50), v.length, (v.length / 1024).toFixed(1) + 'KB'));
Looks like this:
And for the record, summed total in kilobytes:
(Object.values(localStorage).map(x => x.length).reduce((a, b) => a + b) / 1024).toFixed(1) + 'KB';
Wrapping up
Seems my Firefox browser's localStorage
limit is still 5MB.
Also, you can do the loop using localStorage.length
and localStorage.key(n)
and localStorage.getItem(localStorage.key(n)).length
but using Object.entries(localStorage)
seems neater.
I guess this means I can still use localStorage
in my app. It seems I just need to localStorage.removeItem('massive-list:items')
which sounds like an experiment, from eons ago, for seeing how much I can stuff in there.
Comments