Ich habe eine langsame Web-App, vor der ich Varnish platziert habe. Alle Seiten sind statisch (sie variieren nicht für einen anderen Benutzer), müssen jedoch alle 5 Minuten aktualisiert werden, damit sie aktuelle Daten enthalten.
Ich habe ein einfaches Skript ( wget --mirror
), das alle 15 Minuten die gesamte Website crawlt. Jeder Crawl dauert ungefähr 5 Minuten. Der Zweck des Crawls besteht darin, jede Seite im Lack-Cache zu aktualisieren, damit ein Benutzer nie auf die Generierung der Seite warten muss (da alle Seiten kürzlich dank der Spinne generiert wurden).
Die Zeitleiste sieht folgendermaßen aus:
- 00:00:00: Cache geleert
- 00:00:00: Spider beginnt zu crawlen, um den Cache mit neuen Seiten zu aktualisieren
- 00:05:00: Spider beendet das Crawlen , alle Seiten werden bis 00:15:00 aktualisiert
Eine Anfrage, die zwischen 0:00:00 und 0:05:00 eingeht, trifft möglicherweise auf eine Seite, die noch nicht aktualisiert wurde, und muss einige Sekunden auf eine Antwort warten. Das ist nicht akzeptabel.
Was ich tun möchte, ist, vielleicht mit etwas VCL-Magie, immer Anfragen von der Spinne an das Backend weiterzuleiten, aber die Antwort trotzdem im Cache zu speichern. Auf diese Weise muss ein Benutzer niemals auf die Generierung einer Seite warten, da es kein 5-Minuten-Fenster gibt, in dem Teile des Caches leer sind (außer möglicherweise beim Serverstart).
Wie kann ich das machen?