{"id":19220506,"url":"https://github.com/timgoll/lscache","last_synced_at":"2026-06-11T20:31:01.637Z","repository":{"id":123885852,"uuid":"102906863","full_name":"TimGoll/LScache","owner":"TimGoll","description":"An easy way to manage the localStorage","archived":false,"fork":false,"pushed_at":"2017-10-30T13:19:20.000Z","size":682,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-23T09:23:55.057Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimGoll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-08T21:42:47.000Z","updated_at":"2017-10-28T12:33:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"e9d9c911-e7e7-4c7f-80bd-d90f04144d23","html_url":"https://github.com/TimGoll/LScache","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TimGoll/LScache","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimGoll%2FLScache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimGoll%2FLScache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimGoll%2FLScache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimGoll%2FLScache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimGoll","download_url":"https://codeload.github.com/TimGoll/LScache/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimGoll%2FLScache/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34217312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T14:35:21.764Z","updated_at":"2026-06-11T20:31:01.619Z","avatar_url":"https://github.com/TimGoll.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LScache\nLScache ist eine Blibliothek, die es dem Entwickler einfacher macht, den ```localStorage``` zu verwenden. Dabei übernimmt die Bibilothek die gesamte Verwaltung der Daten und fügt auch ein Abalufdatum gespeicherter Daten hinzu und ermöglicht es Bilder in diesem Speicher zu cachen. Besonders wenn man Bilder zwischenspeichern möchte, ist der Speicher von etwa 5MB sehr schnell belegt. Aus diesem Grund wurde bei der Entwicklung der Bibilothek Datenkomprimierung mit eingeplant und es empfiehlt sich diese Bibliothek zusammen mit [lz-String](https://github.com/pieroxy/lz-string) zu verwenden.\n\n## Eckdaten\n- basiert auf ```localStorage```\n- standardmäßig bis zu 5MB Speicher\n- Browserkompatibilität: Chrome 4+, Firefox 3.5+, InternetExplorer 8+, Opera 10.50+, Safari 4+\n- speichert lokal auf dem Computer, Daten sind über alle geöffneten Tabs der selben Domain verfügbar\n- Events abfangbar, wenn in einem anderen Tab die Daten verändert werden\n- Daten bleiben erhalten, bis Cookies gelöscht werden, diese Bibliothek unterstützt aber eine zeitgesteuerte Datengültigkeit\n\n## Einbinden\nNach dem Download der aktuellsten Version (es empfiehlt sich die min-Version zu laden), muss die Datei auf den eigenen Webserver gespeichert werden und anschließend im Header der HTML Datei eingebunden werden. Hierbei muss die Bibliothek vor allen Dateien, die auf diese zurückgreifen, eingebunden werden.\n\n```html\n\u003cscript type=\"text/javascript\" src=\"your/path/LScache.min.js\"\u003e\u003c/script\u003e\n```\n\nFalls die Komprimierungsfunktion der Bibliothek aktiviert werden soll, muss außerdem [lz-String](https://github.com/pieroxy/lz-string) installiert sein und vorher eingebunden werden.\n\n```html\n\u003cscript type=\"text/javascript\" src=\"your/path/lz-string.min.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"your/path/LScache.min.js\"\u003e\u003c/script\u003e\n```\n\n## Befehle\n### Initialisierung\n```js\nLScache.init({[compression_type]});\n//compression_type : DISABLE, DEFAULT, COMPATIBILITY [default: DISABLE]\n```\nDer Parameter der ```init()``` Funktion ist optional und sollte gesetzt werden, wenn der Cash für Bilder verwendet werden soll. Die init() Funktion sollte auf jeden Fall beim Laden der Seite ausgeführt werden, da sonst zum Beispiel Eventlistener nicht funktionieren.\n\n**Compression Type:**\u003cbr\u003e\n```DISABLE```, ```DEFAULT``` und ```COMPATIBILITY``` stehen zur Verfügung. Standardmäßig ist die Komprimierung deaktiviert, da dafür die LZ-string Bibliothek gebraucht wird. Die ```DEFAULT```-Komprimierung funktioniert nur in Webkit Browsern (Android Browser, Chrome, Safari, Opera), daher gibt es die ```COMPATIBILITY```-Komprimierung für die restlichen Browser (IE9-10, Firefox, Edge). Dieser Modus braucht jedoch 166% des ```DEFAULT```-Speichers.\n\n**Beispiel:**\n```js\nwindow.onload = function() {\n    LScache.init({compression_type: DEFAULT});\n};\n```\n\n### Element hinzufügen\n```js\nLScache.add(objectname, object, {[expiretime]});\n```\n\n**Beispiel:**\n```js\nvar my_object = {\n    key_1 : \"beliebiger Eintrag\",\n    key_2 : [1, 5, 8],\n    key_3 : {\n        a: 19,\n        b: 5\n    }\n};\n\nvar my_string = \"Hallo Welt!\";\n\nLScache.add('my_object', my_object); // \u003e\u003e\u003e true\nLScache.add('my_object', my_string); // \u003e\u003e\u003e false\nLScache.add('my_string', my_string); // \u003e\u003e\u003e true\n```\n\n### Element aktualisieren\n```js\nLScache.update(objectname, object, {[expiretime]});\n```\n\n**Beispiel:**\n```js\nvar my_string = \"Hallo schöne Welt!\";\n\nLScache.update('my_random_key', my_string); // \u003e\u003e\u003e false\nLScache.update('my_string', my_string);     // \u003e\u003e\u003e true\n```\n\n### Element bekommen\n```js\nLScache.get(objectname);\n```\n\n**Beispiel:**\n```js\nvar my_string = \"Hallo schöne Welt!\";\n\nLScache.get('my_random_key');    // \u003e\u003e\u003e false\nLScache.get('my_string')         // \u003e\u003e\u003e \"Hallo schöne Welt!\"\n```\n\n### Element löschen\n```js\nLScache.remove(objectname);\n```\n\n### alle Elemente löschen\n```js\nLScache.remove_all();\n```\n\n### Bild von Server Laden und in Speicher schreiben\nHier ist zu beachten, dass diese Funktion kein ```false``` zurück gibt, wenn der Name bereits vergeben wird. Überschrieben werden Daten dennoch nicht.\n```js\nLScache.convert_to_base64_from_path(objectname, filepath, callback, {[expiretime]});\n```\n\n**Beispiel:**\n```js\n//Neues Bild in Cash speichern\nLScache.convert_to_base64_from_path('testimage', 'test.jpg', LScache.add);\n//Bild in Cash aktualisieren\nLScache.convert_to_base64_from_path('testimage', 'test.jpg', LScache.update);\n```\n\n### Bild aus Cash einbinden\nDiese Funktion wird nur gebraucht, wenn Bildkompression aktiviert ist.\n```js\nLScache.uncompress_image(objectname);\n```\n\nHTML:\n```html\n\u003cbody\u003e\n    \u003cimg id=\"my_image\"\u003e\n\u003c/body\u003e\n```\n\nJS:\n```js\nvar image_data = LScache.uncompress_image(LScache.get('testimage'));\nif (image_data != false)\n    document.getElementById('my_image').src = image_data;\n```\n\n### EventListener hinzufügen\nEs ist möglich vier verschiedene Callbackfunktionen zu registrieren. Folgende vier Events stehen zur Verfügung: ```added```, ```changed```, ```removed``` und ```expired```. ```expired``` steht in allen geöffneten Tabs zur Verfügung, auch in dem Aktiven. Die anderen drei Events werden nur in den Tabs ausgeführt, die nicht das Event auslösen.\n```js\nLScache.addEventListener(type, function_pointer);\n```\n\n**Beispiel:**\n```js\nvar my_callbackFunction = function(event) {\n    console.log(event.key);\n    console.log(event.obj);\n};\n\nLScache.addEventListener('added', my_callbackFunction); // \u003e\u003e\u003e true\n```\n\n### EventListener entfernen\n```js\nLScache.removeEventListener(type);\n```\n\n**Beispiel:**\n```js\nLScache.removeEventListener('added');\n```\n\n### Zeit bis zur Ungültigkeit aktualisieren\n```js\nLScache.update_expiretime(objectname, {expiretime});\n```\n\n### Zeit bis zur Ungültigkeit abfragen\n```js\nLScache.get_expiretime(objectname);\n```\n\n### Größe des belegten Speichers bestimmen\n```js\nLScache.get_size();\n```\n\n### Liste aller Elemente im Speicher auslesen\n```js\nLScache.get_stored_list();\n```\n\n## Performance\n### Datenkompression anhand eines Beispiels\nDieses Bild hat auf der Festplatte eine Größe von ```676.260 Bytes```. Standardmäßig (unkompremiert) werden ```901.703 Bytes``` verwendet. Die ```DEFAULT```-Komprimierung erzielt eine Größe von ```396.865 Bytes```, die ```COMPATIBILITY```-Komprimierung jedoch ```658.796 Bytes```.\n\n![Beispielbild](https://github.com/TimGoll/LScache/blob/master/tests/test.jpg \"Beispielbild\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimgoll%2Flscache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimgoll%2Flscache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimgoll%2Flscache/lists"}