Wie überprüfe ich, ob der Cache auf der aktuellen Seite funktioniert?

9

Einige Module deaktivieren das Caching auf bestimmten Seiten stillschweigend. Wie lässt sich am einfachsten überprüfen, ob dies der Fall ist, und auch problematische Module identifizieren?

user11153
quelle
Mit Boost-Cache ist es einfach, es gibt einen HTML-Kommentar am Ende der Seite. mit anderen Caches ist es etwas interessanter.
Mołot
@ Mołot Ich interessiere mich hauptsächlich für den Standard-Drupal-Cache, aber auch Anweisungen für andere Caches sind willkommen.
user11153

Antworten:

13

Der einfachste Weg ist wahrscheinlich, die HTTP-Antwortheader zu überprüfen.

Zum Beispiel mit dem DOM-Inspektor-Tool Ihres Browsers (z. B. der Registerkarte "Netzwerk" von Chrome )

Cache Miss

Hier sind einige Beispiel-Antwort-Header von drupal.org, die einen Cache-Fehler zeigen. In diesem Fall werden bei Verwendung von Varnish jedoch auch der Kern-Drupal-Cache ähnliche Header gesetzt.

Cache Miss http Header

Cache getroffen

Hier ist einer, der einen Standard-Drupal-Cache-Treffer zeigt:

Cache Hit http Header

David Thomas
quelle
Aber Drupal.org steht hinter Varnish, nicht wahr? Ich kann keine X-Cache-Header auf meinem Drupal sehen, auf die direkt zugegriffen wird. Oder würde ich, wenn die Seite, mit der ich es teste, zwischengespeichert werden könnte?
Mołot
@ Mołot Ich kann die Lack-Header sehen, wenn ich abgemeldet bin.
Letharion
Für meine Drupal 7-Site sehe ich zwar den Header, X-Drupal-Cache: HITaber auf meiner Drupal 6-Site sehe ich nichts. Es könnte durch Reverse Proxy entfernt werden?
user11153
@ user11153 Ja, D6 scheint den X-Drupal-Cache-HTTP-Header dort nicht zu setzen. Jedoch tut D7 dies in_drupal_bootstrap_page_cache
David Thomas
@DavidThomas Was überprüft den Cache-Status in Drupal 6? Gibt es Alternativen? Und danke für die Anleitung zu D7.
user11153
0

Hinzufügen von Cache-Headern zum Drupal 6-Standardcache

Leider geht es um einige Kern-Hacking.

In Datei includes/bootstrap.incändern Zeilen von

      // If there is a cached page, display it.
      if ($cache) {
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      drupal_page_header();
      break;

zu

      // If there is a cached page, display it.
      if ($cache) {
        header('X-Drupal-Cache: HIT');
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      header('X-Drupal-Cache: MISS');
      drupal_page_header();
      break;

und der Rest der Anweisungen ist genau wie in Davids Antwort .

user11153
quelle