Ralf Hendel, Geschäftsführer
Drupal Enthusiast und Freizeit-Pianist.

Knowledge

Modul "Cache Exlude" Die Lösung für zufällig sortierte Views für anonyme Benutzer

Zur Verbesserung der Performance cacht Drupal alle per Views erstellen Abfrage-Ergebnisse und liefert an anonyme - nicht angemeldete - Nutzer der Seite grundsätzlich die Ergebnisse aus dem Cache aus. Nur angemeldete Nutzer erhalten "Live-Ergebnisse", die unmittelbar aus der Datenbank abgefragt werden.

Im Regelfall ist dies sinnvoll und beschleunigt die Auslieferungszeit der Seite bzw. spart Rechenzeit und Performance.

Bei zufällig sortierten ("random-sortet") Views besteht dabei aber ein Problem:

Auf unseren werblichen comm-press-Seiten, wie z.B. "Organisieren", blenden immer zufällig eine zum Thema passende Referenz ein. Die Idee ist, dem Besucher immer wieder neue Referenzen zu zeigen.

Da die Besucher an der Seite nicht angemeldet sind, passiert folgendes: Der View "greift" sich eine zufällige Referenz und cacht diese. So bekommt der Besucher trotz der zufälligen Sortierung immer wieder die selbe Referenz angezeigt.

Im Zusammenhang mit Views wurde dieses Problem ausführlich diskutiert: "Random sort not working for guests". Das Verhalten ist kein Problem von Views sondern liegt im allgeinen Drupal-Caching Mechanismus begründet. Hier schafft nun ein einfaches und punktgenaues Modul "Cache Exclude" Abhilfe, das ermöglicht, einzelne URLs für Caching zu sperren.

Die Bedienung ist selbsterklärend: unter /admin/settings/cacheexclude die Liste der zu sperrenden URLs eintragen und fertig.

Sicherheitshalber empfehle ich für den Fall sich nachträglich ändernder URLs, Node-IDs der Art /node/123 zu verwenden und nicht die sprechenden URLs aus PathAuto. Aus Sicht von Suchmaschinen-Optimierung sollten URLs stabil und langlebig sein - aber eintreten kann dieser Fall natürlich dennoch. Ein Tippfehler im Titel reicht schon, dass sich die URL nachträglich ändert.

Kommentare

Ralf Hendel - 2. Dezember 2009 - 16:18
<p>Die Views Caching-Optionen funktionieren als zusätzliche Caching-Methode und liegen damit gewissermaßen "über" dem normalen Drupal-Caching.</p><p>Bei deaktivem Views-Cache werden die Seiten dennoch von Drupal gecacht. Erst wenn der normale Drupal-Cache unter "Leistung" ausgestellt ist (/admin/settings/performance), funktionieren Random-Views für Gäste wie man es erwarten würde.</p>
Ronald Krentz - 2. Dezember 2009 - 14:04
<p>Werden denn die Caching Einstellungen eines Views (unter "Advanced" in der Bearbeitung des Views) nicht akzeptiert? Ich hatte so einen speziellen Fall bisher noch nicht.</p><p>Bei den permanenten Pfaden stimme ich dir zu. Ich denke auch, dass sprechende Pfade mit halben Prosa-Texten in der URL überbewertet werden, auch in Hinblick auf SEO. Auch wenn es nicht optimal ist, ich finde die Kombination aus Global-Redirect, Pathauto, und Path-Redirect Optimal. Mit letzterem kann man Pathauto derart einstellen, dass bei einer Änderung des Path (z.B. Tippfuhler) der neue Alias gesetzt wird und für den alten Alias ein Redirect (z.B. 301) gesetzt wird. Diesen variablen Teil des Pfades darf man natürlich nicht für die inhaltliche Auswertung heranziehen, sonst ist die Trefferschärfe nicht gegeben. :-)</p><p>Grüße, Ronald</p>