2014-07-10 2 views
7

Ich versuche, einige Cache-Busting auf meine eckige Anwendung in einer Weise zu implementieren, die es weiterhin Caching erlaubt, aber brechen Sie es immer, wenn wir neuen Code zur Produktion schieben. Meine Einrichtung beinhaltet bis jetzt grunt cache-breaker https://www.npmjs.org/package/grunt-cache-breaker, um durch meine verkettete eckige app.js-Datei zu graben und Abfrage-Parameter an jeden String anzuhängen, der in einer .html-Dateierweiterung endet. Ich mache das auch für alle Template-Dateien, die ich mit ng-include verwende. Eine Komplikation, die dies erzeugt, ist, dass ich jetzt zuerst meine Vorlagendateien in ein Verzeichnis dist/kopieren muss, um die Cachebusted-Versionen sicher zu vergiften und nicht alle meine Vorlagen bei jedem Brechen des Caches zu committen (und Konflikte zu erzeugen). .Ist das eine gute Methode für Template-Cache-Zerschlagung in eckigen?

Meine Frage ist nicht, wie dies zu tun, aber mehr eine Überprüfung der Vernunft, ob dies eine praktische Möglichkeit ist, Template-Caching auf neuen Code zu vermeiden? Ich habe Beispiele für das Deaktivieren des Zwischenspeicherns von Vorlagen in eckigen Klammern gesehen, aber es scheint, dass es etwas ist, das ich zwischen Code-Push-Vorgängen verwenden möchte, wenn sich Dateien nicht ändern.

Wie navigiert dieses Problem?

Antwort

9

Ich denke, ein beliebter Ansatz besteht darin, etwas wie ng-templates (mit einem grunt plugin) zu verwenden, um eine JS-Datei zu generieren, die alle Ihre Vorlagen im Cache speichert. Verwenden Sie dann den Grunt-Workflow usemin zusammen mit einer Asset-Versionsaufgabe, um die JS-Datei zu versionieren.

+0

+1 Asset Versionierung – core

+0

Ich habe endlich etwas Zeit gefunden, um in diese zu graben. Ich habe viel darüber gelernt, wie kantige Caches Vorlagen sind. Dies war eine sehr schöne und einfach zu implementierende Lösung für ein Projekt, das bereits ziemlich viel Grunz verwendet. Und es brachte einige Leistungsverbesserungen, abgesehen von der Lösung von Caching-Problemen. Danke für den Tipp. – Constellates

+0

@mfollett @ Constellates, nach [angularjs-how-to-clear-routeproviders-caches-of-templateurl] (http://stackoverflow.com/questions/20284976/angularjs-how-to-clear-routeproviders-caches- of-templateurl), wenn wir '$ routeProvider' direkt verwenden, erhalten wir bereits' $ templateCache'. Ich denke also, Grunt-Angular-Templates sind nicht erforderlich. Nur 'usemin' kann genügen. Ich könnte mich irren, aber ich versuche nur zu analysieren, was Sie angegeben haben. –

Verwandte Themen