Caching mit wget

8

Ich benutze Drupal 7. Nachdem ich den Cache geleert habe, verwende ich wget wie folgt, um alle Seiten zurückzuspeichern.

wget --quiet http://xxx.xxx/sitemap.xml --output-document - | egrep -o "http://xxx.xxx[^<]+" | wget -q --delete-after -i -

Nachdem dies erledigt ist, überprüfe ich in der Datenbank die Tabelle cache_page und alle Seiten scheinen dort zu sein. Wenn ich jedoch eine Seite mit dem Browser besuche, dauert es einige Zeit, als wäre sie nicht zwischengespeichert. Was mir auch aufgefallen ist, ist, dass nach dem Besuch der Seite im Browser die Ladezeit beim nächsten Besuch sehr schnell ist, wie sie sein sollte.

Was kann das Problem sein? Ich verwende diese Methode erfolgreich auf einer Drupal 6-Seite ohne Probleme. Das Fehlerprotokoll zeigt nichts an, außer dass favicon.ico nicht existiert.

Das Zugriffsprotokoll für URLs sieht folgendermaßen aus:

www.xxx.sk 11.116.206.232 - - [01 / Jan / 2013: 18: 09: 12 +0100] GET / myurl HTTP / 1.1 200 31532 - Wget / 1.13.4 (cygwin)

Ich bin NICHT eingeloggt

EDIT: Ich habe Drupal 7.14 auf 7.19 Version aktualisiert, aber keine Änderung. Nachdem ich mir die Tabelle cache_page angesehen hatte, stellte ich fest, dass alle mit dem Browser besuchten Seiten aus irgendeinem seltsamen Grund mit _900 am Ende wie folgt generiert wurden: www.example.com/examplepath_900. Ich habe es vorher nicht bemerkt, weil die Pfade nicht in die Zellen in Datenbanktabellen passen. Deshalb werden Seiten nicht zwischengespeichert. Außerdem habe ich die Neuinstallation von Drupal 7 auf demselben Host eingerichtet, auf dem das Caching mit wget wie erwartet ohne Probleme funktioniert. Es kann auch kein Problem mit htaccess- oder Einstellungsdateien geben. Vielleicht kann ein installiertes Modul dies verursachen?

Loparr
quelle
Woher machst du das? Der gleiche Server oder ein anderer Server?
mpdonadio
@MPD Ich benutze das Cygwin-Terminal, um wget auszuführen. Meine Drupal 7-Seite wird jedoch von einem anderen Anbieter gehostet, den meine Drupal 6-Site
Loparr
Können Sie HTTP-Header anzeigen? Nachdem Sie das Skript ausgeführt haben, überprüfen Sie die Header und suchen Sie nach einem wie "X-Drupal-Cache: Hit". Ich vergesse jedoch den genauen Headernamen.
mpdonadio
@MPD Ich habe den Cache geleert, das Skript ausgeführt, die Tabelle cache_page zeigt alle Links, aber ich habe X-Drupal-Cache: MISS in den Headern aller neu besuchten Seiten gefunden.
Loparr
Testen Sie als authentifizierter Benutzer? In diesem Fall wird der Seitencache nicht getroffen.
David Thomas

Antworten:

3

Alle modernen Browser senden einen Accept-Encoding ~ 'gzip'-Header, sodass zwischengespeicherte Einträge nicht verwendet werden, wenn Ihre Spinne diesen nicht verwendet (ein anständiges Back-End, das gezippte Antworten generiert, fügt eine Variation hinzu: Accept-Encoding-Header). Sie können sich auch die Option --mirror von wget ansehen, die hier hilfreich sein könnte.

Webkenny
quelle
Wenn Webkenny etwas über die Leistung von Drupal sagt, gehe ich davon aus, dass es wahr ist. +1.
Letharion
1
Für den Kern sollte der gzip-Header keine Rolle spielen. drupal_serve_page_from_cache ()
mikeytown2
3

Kennys Rat ist solide. Eine andere Idee ist, dass Sie möglicherweise mehrere Assets haben, die beim ersten Laden im Browser zwischengespeichert werden und dann nicht beim zweiten. Versuchen Sie, den Test nicht in demselben Browser, sondern in einem Chrome Incognito-Fenster durchzuführen, dieses Fenster zu schließen und dann erneut durchzuführen. Dies sollte helfen, festzustellen, ob der Drupal-Seiten-Cache die Anforderung nicht erfüllt (möglicherweise aufgrund der Gzip-Idee), der für die Langsamkeit verantwortlich ist, oder ob das Zwischenspeichern von Dateien durch den Browser dazu führt, dass sie nicht erneut heruntergeladen werden, wodurch die zweite Anforderung schneller wird.

greggles
quelle