Was ist der Punkt?
Es gibt bereits eine etablierte Technik, die als clientseitiges Caching bezeichnet wird. Was bringt der lokale HTML5-Speicher in diesem Fall, wenn Caching fehlt?
Möglicherweise haben Sie eine seltsame Anwendung, die Teile des JavaScript-Codes dynamisch laden muss, damit Sie den Cache nicht effektiv nutzen können. Dies ist jedoch ein äußerst seltener Fall.
Beachten Sie auch eine andere Sache. Browser haben spezielle Richtlinien für den Cache, und die meisten Browser können den Cache gut verwalten (nur ältere Inhalte entfernen usw.). Indem Sie Ihren selbst erstellten Cache implementieren, verhindern Sie, dass der Browser ihn ordnungsgemäß verwaltet. Es kann nicht nur von sich aus kritisiert werden, sondern es wird Sie auch früher oder später verletzen. Beispiel: Wenn die Benutzer einer Webanwendung Fehler melden, werden Sie häufig aufgefordert, den Cache zu leeren. Ich bin nicht sicher, was Sie in Ihrem Fall fragen werden, da das Leeren des Caches niemals Probleme mit Ihrer Web-App lösen wird.
Als Antwort auf Ihre erste Bearbeitung (Ihre zweite Bearbeitung ist nicht zum Thema gehörig):
Ich bin mir des Browsercaches bewusst, es wird noch einige Headerzugriffsüberprüfungen geben
Es scheint Ihnen ein gewisses Verständnis für das Browser-Caching zu fehlen. Deshalb ist es wichtig zu verstehen, wie es funktioniert, bevor Sie mit der Implementierung Ihres eigenen Caching-Mechanismus beginnen . Erfinden Sie Ihr eigenes Rad nur dann neu, wenn Sie die vorhandenen Räder ausreichend kennen und einen guten Grund haben, sie nicht zu verwenden. Siehe Punkt 1 meiner Antwort auf die Frage "Das Rad neu erfinden und es NICHT bereuen" .
Wenn Sie einige Daten über HTTP bereitstellen, können Sie einige Header angeben, die sich auf den Cache beziehen:
Last-Modified
gibt an, wann der Inhalt geändert wurde,
Expires
Gibt an, wann der Browser den Server fragen muss, ob sich der Inhalt geändert hat .
Diese beiden Header ermöglichen dem Browser Folgendes:
- Vermeiden Sie es, den Inhalt immer wieder herunterzuladen. Wenn
Last-Modified
auf den letzten Monat eingestellt ist und der Inhalt bereits einige Stunden zuvor heruntergeladen wurde, muss er nicht erneut heruntergeladen werden.
- Fragen Sie nicht nach dem Datum, an dem die Datei zuletzt geändert wurde. Wenn
Expires
eine Cache - Einheit ist 5. Mai th , 2014 Sie keine GET - Anforderung ausgeben müssen weder im Jahr 2011 noch im Jahr 2012 oder 2013, da Sie wissen , dass der Cache ist up-to-date.
Der zweite ist wichtig für CDNs. Wenn Google einem Besucher von Stack Overflow JQuery bereitstellt oder von Stack Overflow verwendete cdn.sstatic.net
Bilder oder Stylesheets bereitstellt, sollen Browser nicht jedes Mal nach einer neuen Version fragen. Stattdessen liefern sie diese Dateien einmal aus, setzen das Ablaufdatum auf einen ausreichenden Wert und das ist alles.
Hier ist zum Beispiel ein Screenshot von dem, was passiert, wenn ich zur Stack Overflow-Homepage komme:
Es gibt 15 Dateien zu bedienen. Aber wo sind all diese 304 Not Modified
Antworten? Sie haben nur drei geänderte Inhaltsanforderungen. Für alles andere verwendet der Browser die zwischengespeicherte Version, ohne eine Anfrage an einen Server zu stellen .
Abschließend müssen Sie wirklich zweimal überlegen, bevor Sie Ihren eigenen Cache-Mechanismus implementieren, und insbesondere ein gutes Szenario finden, in dem dies nützlich sein kann . Wie ich am Anfang meiner Antwort gesagt, kann ich nur eins: wo man Stücke von JavaScript dienen , sie zu verwenden , um durch, OMG, eval()
. Aber in diesem Fall bin ich mir ziemlich sicher, dass es bessere Ansätze gibt:
- Effektivere Verwendung der Standardcachetechniken oder
- Einfacher zu warten.