Irgendeiner Weise zu zwingen, zurücksetzen, werden alle zwischengespeicherten statischen Dateien auf AppEngine?
Habe ich eine bekannte AppEngine Frage, wo die falsche statische Inhalte werden zwischengespeichert, wenn ich eine bestimmte URL für die app, aber die Recht statische Inhalte zeigt, ob ich Anhängen ?foo parameter Büste cache und VERSION.myapp.appspot.com funktioniert auch.
Gibt es einen Weg, um die richtigen Inhalte zeigt sich an der unverändert URL?
Ich würde glücklich sein, die Anwendung zu löschen und wiederherstellen, oder etwas drastischer. Die app ist nicht live, aber ich brauche es in ein paar Stunden. Alles, um diese URLS zu arbeiten, so dass die mobile app im Gespräch mit der AppEngine app bekommt die Daten Stimmen.
BEARBEITEN
cURLing die überschriften, die ich sehe:
HTTP/1.1 200 OK
ETag: "ZN9VxQ"
Date: Tue, 14 Aug 2012 02:00:58 GMT
Expires: Wed, 15 Aug 2012 02:00:58 GMT
Content-Type: text/html
Server: Google Frontend
Cache-Control: public, max-age=86400
Age: 34623
Transfer-Encoding: chunked
Bin ich abgespritzt für noch 50.000 Sekunden? Trotzdem zu kürzen?
BEARBEITEN FÜR KOMMENTARE:
In der app.yaml, habe ich diese handler:
- url: /static
static_dir: static
expiration: 1s
Ich habe nun versucht, das entfernen der Ablauf:
- url: /static
static_dir: static
Und ich fügte hinzu, diese an die Spitze der app.yaml, auf der Grundlage der docs:
default_expiration: "1m"
Auch, wenn Sie Dateien löschen, werden Sie nicht sofort verschwinden, wenn ich bereitstellen.
- verwenden Sie eine benutzerdefinierte domain. Wenn ja, müssen Sie mithilfe von cache-busting-Techniken, wie der google-edge-cache haben werden gekickt.
- Wenn das der Fall ist, wie lange dauert das cache-letzten? Und ich bin mir nicht sicher... ich war nur mit myapp.appspot.com aber nachdem dieses problem im Gange war, mein Kollege hat registrieren eine domain zur Weiterleitung auf die URL... wäre das egal?
- Ist es möglich, irgendeine Art von handler in der app.yaml umleiten, die Basis-urls der nicht zwischengespeicherten statischen urls? Kann ich tun, cache-busting, ohne in der Lage zu ändern die URLs der mobilen app ist der Zugriff auf?
- ersten Schritt ist festzustellen, dass es die edge-cache. Vergleichen Sie die Ergebnisse mit wget/curl zwischen appspot, und die benutzerdefinierte Domäne.
- Der benutzerdefinierte URL ist nur 404 eigentlich, spielt das eine Rolle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, was cache-control verwendet wird. Check-in firebug och chrome-Inspektor und sehen, was das Ablaufdatum gesetzt werden.
Wenn Sie festgelegt haben, kann der cache-control public, Sie kann sich nicht auf die Kontrolle, da die Dateien aus dem cache auf verschiedene Proxys und-server auf dem Weg.
Wenn Sie cache-control private, sollten Sie in der Lage sein, um die reset-browser-cache und in Ordnung sein, aber wie Sie sagen, manchmal hat man die falschen Dateien aus dem Google-Produktionsumgebung. Ich habe das gleiche problem. Die Schnellste Lösung ist das hinzufügen einer Abfrage param, um die Dateien geladen werden.
Es ist ein Weg zur Verkürzung der Ablauf der Zeit, für statische Dateien zwischengespeichert, indem Sie Ihre app auf Google Cloud.
Kopf auf Ihre Google Cloud Console und öffnen Sie Ihr Projekt. Unter dem linken hamburger-Menü, Kopf-zu-Speicher -> Browser. Dort sollten Sie mindestens einen Eimer: your-project-name.appspot.com. Unter der Lifecycle-Spalte, klicken Sie auf den link mit Bezug auf your-project-name.appspot.com. Löschen Sie alle vorhandenen Regeln, da Sie möglicherweise in Konflikt mit der man jetzt erstellen.
Erstellen Sie eine neue Regel, indem Sie auf "Regel Hinzufügen" - Schaltfläche. Für die Objekt-Bedingungen, wählen Sie "nur der "Neueren version" - option und setzen Sie ihn auf 1. Vergessen Sie nicht, klicken Sie auf den button "Weiter". Für die Aktion, wählen Sie "Löschen" und klicken Sie auf den button "Weiter". Speichern Sie die neue Regel.
Diese neue Regel wird bis zu 24 Stunden dauern, um wirksam werden, aber zumindest für mein Projekt dauerte es nur ein paar Minuten. Sobald es ist und läuft, die version der Dateien wird gedient, indem Sie Ihre app unter your-project-name.appspot.com immer die neueste bereitgestellt, das problem zu lösen. Auch, wenn Sie routinemäßig die Bearbeitung von statischen Dateien, sollten Sie entfernen Sie alle
expiration
element-Handler im Zusammenhang mit diesen statischen Dateien und diedefault_expiration
element aus der app.yaml-Datei, die helfen, ein unbeabsichtigtes caching von anderen Servern.