2016-07-14 23 views
7

Im Moment haben wir eine neue Serverumgebung mit mehreren Servern, so dass die Cache-Busting-Funktionalität von Laravel Elixer nicht funktioniert, wenn wir das Repository herunterladen und Schluck laufen, wie jeder Server hat eine andere Version der .js- und .css-Datei.Laravel Elixer Versionierung (Cache Buster) mehrere Server

Das Problem ist Load Balancing kann der Benutzer an jeden Server pro Anfrage senden. Einige Browser scheinen gegen das Problem immun zu sein, aber zum Beispiel kann ich die CSS oder JS mit JMeter nicht richtig laden.

Gibt es eine Möglichkeit, den Build zu syncronisieren, ohne die kompilierten Dateien zum Repository hinzuzufügen oder alles per FTP zu übertragen?

Wir versuchen, die Bereitstellung zu automatisieren, indem Sie ein Skript ausführen, das den neuesten Repo jedes Mal herunterlädt, wenn productiosn Branch aktualisiert wird.

+0

Es funktioniert nicht? Oder meinst du, du musst weiterhin redundante Versionen machen? –

+0

Es funktioniert wunderbar, aber jeder Server hat einen anderen Cache-Busting-Dateinamen – brianlmerritt

+0

Es ist eine Weile her, seit ich Laravel verwendet habe, also erinnere mich bitte, warum das wichtig ist? Ihre Quell-SASS sollte auf jedem Entwicklungscomputer gleich bleiben und Sie verpflichten sich nicht, das kompilierte CSS zu erstellen. Was ist also wichtig, wenn es anders ist? Oder sprechen Sie von einer Art Load-Balancer-Problem mit einer geclusterten Produktionsumgebung, sodass Endbenutzer möglicherweise redundante Kopien dieser Ressourcen erhalten müssen, je nachdem, auf welchen Knoten sie vom Load Balancer geworfen werden? –

Antwort

4

Ich denke, dass die einzige Lösung für dieses Problem ist, kompilierte Assets Dateien zu committen.

Ich fand diese Lösung zunächst seltsam, weil wir nicht Version vendor Ordner zum Beispiel.

Aber am Ende fand ich, dass die meisten der Front-End-Projekte immer einen dist Ordner mit kompilierten Dateien committieren.

Sie müssten also Ihren Ordner build Ihres öffentlichen Pfades bei jeder Änderung an einer Asset-Datei festschreiben.

Natürlich vergessen Sie nicht, eine gulp --production vor dem Drücken zu machen, um Ihre Dateien zu minimieren.

+0

Danke - ich werde am Montag nachschauen und wieder kommen :) – brianlmerritt

+0

Ich denke du bist nah dran, aber Dencker's Vorschlag sollte auch in der Antwort enthalten sein :) – brianlmerritt