Frage

schob ich eine neue Version meiner Webseite, aber jetzt ist die CSS und statische Bilder bereitstellen nicht richtig.

Hier ist die verkorkste Seite: http://www.gaiagps.com

appengine zeigt die neueste Version, als ob korrekt zu sein: http: //1.latest.gaiagps.appspot .com /

Jede Hilfe?

War es hilfreich?

Lösung

Ich habe gesehen, bevor sie auf App Engine, auch bei der Verwendung von Cache-Busting-Abfrageparametern wie /stylesheets/default.css?{{ App.Version }}.

Hier ist meine (unbestätigt) Theorie:

  1. Sie drücken, um eine neue Version durch den Einsatz oder eine neue Version default ändern.
  2. Während dieses Update auf allen GAE Instanzen propagiert wird Ihre Anwendung läuft ...
  3. ... jemand schlägt Ihre Website.
  4. Die Anforderung für statische Ressource default.css{{ App.Version }} wird an dem Google-CDN gesendet, die es noch nicht haben.
  5. Google CDN fragt GAE für die Ressource vor Ausbreitung von Schritt # 2 für alle Instanzen durchgeführt wird.
  6. Wenn Sie Pech haben, dient GAE die Ressource von einer Instanz auf die alte Version läuft ...
  7. ..., die in der Google-CDN als maßgebliche "neue" Version wird nun im Cache gespeichert.

Wenn diese (wenn dies ist, was passiert) geschieht, kann ich bestätigen, dass kein Betrag von Cache-Busting-Browser Arbeit helfen. Die Google CDN-Server sind die falsche Version zu halten.

fix: Die einzige Möglichkeit, die ich gefunden habe, dies zu beheben, ist eine andere Version zu implementieren. Sie haben nicht das Risiko von dieser wieder geschieht laufen (wenn Sie keine CSS-Änderungen seit der Race-Bedingung gemacht haben), denn selbst wenn die Race-Bedingung auftritt, vermutlich Ihre erste Update von der Zeit getan wird Sie Ihren zweiter bereitstellen, so werden alle Instanzen wird die richtige Version egal servieren was.

Andere Tipps

Es folgt, was für mich gearbeitet hat.

  1. Servier CSS-Datei aus der statischen Domäne. Dies wird automatisch von GAE erstellt.

    // statisch. {Your-app-ID} .appspot.com / {css-file-path}

  2. Bereitstellen Ihrer Anwendung. An diesem Punkt wird Ihre App gebrochen werden.

  3. die Version der CSS-Datei ändern

    // statisch. {Your-app-ID} .appspot.com / {css-file-path}? V = {version Name}

  4. einsetzen wieder.

Jedes Mal, wenn Sie die CSS-Datei ändern. Sie wird 2,3 und 4 wiederholen

Ihr Link sieht gut zu mir, es sei denn, ich etwas fehlte.

Sie haben Ihr altes CSS zwischengespeichert und nicht das neue CSS bekommen es nach der Aktualisierung. Versuchen Sie, Ihren Browser-Cache zu löschen und sehen, ob das funktioniert.

Going to 1.Latest Downloads die neue CSS, da es nicht im Cache, so ist es richtig angezeigt wird.

hatte ich dieses Problem auch. Ich war mit Kolben mit GAE so dass ich keine statische Handler in meinem app.yaml hatte. Als ich es hinzugefügt, arbeitet die deploy. Versuchen Sie, so etwas wie dieses

handlers:
- url: /static
  static_dir: static

Ihre app.yaml und deploy wieder. Er arbeitete für mich. Anscheinend ist Google zu optimieren versucht, durch nicht-Dateien zu aktualisieren, dass sie denkt, dass Benutzer nicht sehen können.

Wie gefunden von schoresch , die Dokumentation für die Standardumgebung für Pyhton Zustand, dass beide Einstellungen für Google Cloud Console und öffnen Sie Ihr Projekt. Unter dem linken Hamburgeren Menü Kopf Lagerung -> Browser. Es sollten Sie mindestens einen Eimer finden: your-project-name.appspot.com. Unter der Spalte Lifecycle, klicken Sie auf den Link in Bezug auf your-project-name.appspot.com. Löschen Sie alle vorhandenen Regeln, da sie mit dem einen Konflikt geraten könnten Sie jetzt schaffen.

Erstellen Sie eine neue Regel durch Klicken auf die ‚Regel hinzufügen‘ klicken. Für die Objektbedingungen, wählen Sie nur die ‚Neuere Version‘ -Option und stellen Sie ihn auf 1. Vergessen Sie nicht auf die Schaltfläche ‚Weiter‘ zu klicken. Für die Aktion, wählen Sie ‚Löschen‘ und klicken Sie auf die Schaltfläche ‚Weiter‘. Speichern Sie Ihre neue Regel.

Das neu erstellte Regel wird bis 24 Stunden in Anspruch nehmen zu übernehmen, aber zumindest für mein Projekt dauerte es nur wenige Minuten. Sobald es ist und läuft, die Version der Dateien von Ihrer App unter your-project-name.appspot.com serviert wird immer die neueste eingesetzt wird , um das Problem zu lösen. Wenn Sie routinemäßig auch, Ihre statischen Dateien bearbeiten, sollten Sie das default_expiration Element aus der app.yaml Datei entfernen, die zu vermeiden unbeabsichtigtes Caching von anderen Servern helfen.

Was ist für mich hier gearbeitet:

Als erstes habe ich geändert, um die Version auf app.yaml .

Dann folgen Sie diese Schritte unter

Gehen Sie zu Ihrer Konsole. -> Klicken Sie auf Ihr Projekt

Auf der Seite Klicken Sie im Menü auf Berechnung -> Versionen :

Es wird alle Versionen sein, und welche Version ist Standard. Mine wurde auf eine ältere Version eingestellt.

Markieren Sie die neue Version.

Für mich gearbeitet. Etwaige Bedenken?

Von der Dokumentation für die Standardumgebung für Pyhton: static_cache_expiration .

Nachdem eine Datei mit einer bestimmten Ablaufzeit übertragen wird, gibt es im Allgemeinen keine Möglichkeit, es zu löschen Zwischen Caches, auch wenn die Benutzer löschen ihre eigene Browser-Cache. Re-Bereitstellung einer neuen Version der App werden alle Caches nicht zurückgesetzt. Deshalb, wenn Sie jemals einen Plan ändern statische Datei, sollte es mit einem kurzen (weniger als eine Stunde) Ablauf Zeit. In den meisten Fällen ist die Standard-10-minütigen Ablaufzeit aneignen.

Für neue Leute diese alten Fragen kommen / Reihe von Antworten wollte ich eine aktualisierte Antwort geben. Ich denke, in 2018-19 die folgenden Informationen wahrscheinlich die meisten der CSS-Update Probleme beheben werden die Menschen haben:

Stellen Sie sicher, dass Ihr app.yaml hat die folgende:

 handlers:
   - url: /static
     static_dir: static
  • Ausführen gcloud app deploy
  • Schauer für 10 Minuten .. und der Shift-Reload Ihrer Website

Ok Für neuere Leute dieses Problem zu sehen, habe ich versucht, den Cache-bersten Ansatz und scheint es zu haben, hier fixiert ist ein Beispiel dafür, was ich für die CSS-Import hat auf app.cfg Datei eine Variable erstellen Ihre appid als Set halten in app.yaml Datei und legen sie es als eine unter

<link href="{{ url_for('static', filename='file.css') }}?{{config.APP_ID}}" rel="stylesheet"> 

Auch für die Datei app.yaml diese Config hinzufügen auf der sicheren Seite sein

Handler:

  • url: / static static_dir: static

Versuchen Clearing-Cache auf Ihrem Browser. genau das gleiche Problem hatte, habe es durch einfaches Löschen Cache fixiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top