[gelöst] Views: den Cache überlisten?
am 11.03.2017 - 18:09 Uhr in
Das Datenchaching von Views spiel mir einen Streich:
Eine View gibt ein Ereignis, dass am aktuellen Tag stattfindet, in einem Block aus.
Steht kein aktuelles Ereignis in der Datenbank (leeres Resultat), wird eine zweite View gestartet, die dann nach anderen Suchkriterien zurückliegende Ereignisse ausgibt.
So weit, so gut.
Solange ich eingeloggt bin, sehe ich korrekte Resultate, auch in der View-Vorschau.
Schaue ich am jedoch nächsten Tag als "anonymous" auf die Seite sehe ich nicht etwa das aktuelle Ereignis, sondern die Blockdarstellung vom vergangenen Tag.
Erst bei einem Anmeldeversuch wird die Ausgabe aktualisiert, egal ob ich mich eingeloggt habe oder nur einen Anmeldeversuch gestartet habe.
Versuchsweise habe ich in den jeweiligen Views unter -> ERWEITERT -> cache: "tag based" auf Zeitbasiert mit Angabe von jeweils 1 Stunde für Anfrageergebnisse und Ausgabeformat umgestellt.
Leider ist das Ergebnis wieder dasselbe: der Ausgabeblock wird nicht entsprechend des neuen Tages aktualisiert.
Nun habe ich erst mal das Datencaching des View-Moduls deaktiviert, in der Hoffnung dass morgen die Anzeige nun selbstständig aktualisiert wird.
Wenn das auch nicht funktioniert, bleibt nur, sich einmal am Tag einzuloggen, um eine Aktualisierung zu erzwingen?
Die Lösung:
In der View:
1. -> ERWEITERT -> Datenbankabfrageeinstellungen: -> Einstellungen -> SQL-rewrting deaktivieren.
2. -> Cache: zeitbasiert. (ich habe hier 2 Stunden/ 2 Stunden gewählt, reicht bei meiner Thematik aus)
3. In den erweiterten Einstellungen von Views ist das Datencaching von Views NICHT deaktiviert.
- Anmelden oder Registrieren um Kommentare zu schreiben
Läuft dein Cron?
am 11.03.2017 - 23:50 Uhr
Hast du einen serverseitigen (zeitgesteuerten) drupal cronjob laufen? Der ist meines Wissens nach Voraussetzung für zeitbasierte Caches.
Und und schreibst
cache: "tag based"
- du meinst wahrscheinlich 'time based'?!
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Views Cache
am 12.03.2017 - 13:40 Uhr
nein, serverseitig läuft da nix.
Views cache in der View selbst: tag based, oder time based: als Anonymous wird nix aktualisiert.
Was ist denn unter
am 12.03.2017 - 21:12 Uhr
Was ist denn unter /admin/config/system/cron konfiguriert?
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Cron:
am 14.03.2017 - 20:13 Uhr
Da läuft der Standard-Cron.
Ich habe den jetzt mal versuchsweise auf "alle 6 Stunden" gesetzt. Ob das was bringt, weiß ich nicht.
Da schlägt meine Unkenntnis zu Buche:
Bei meinem Server habe ich keinen ssh-Account, also fällt drush aus. Wie kann ich den Cron kofigueriren, so dass der Viehs-Cache um Mitternacht gelöscht wird? Ich glaube das könnet evtl. schon weiterhelfen.
Wenn der Cron nicht von
am 15.03.2017 - 10:19 Uhr
Wenn der Cron nicht von aussen getriggert wird, sondern in drupal auf x Stunden gesetzt wird, löst der 1. Besucher nach dieser Zeit den Cron aus, das nennt sich poorman's cron und ist suboptimal.
Lies mal hier: http://www.drupalcenter.de/handbuch/6019 (und es gibt auch andere threads dazu hier im Forum).
Kurz gesagt, der Weg ist: in drupal deaktivieren und von aussen antriggern.
Es gibt sogar shared hoster mit accounts unter 10 €/mtl., bei denen ein serverseitiger Cron konfigurierbar ist. Wenn das nicht der Fall ist, gibt es Anbieter wie https://www.cronjob.de/.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Cron job und Views Cache
am 15.03.2017 - 12:11 Uhr
Ja, wie Du sagst, Marco,
erst der erste angemeldete User löst hier etwas aus.
Falls der Cronjob unabhängig von einem User - etwa um Mitternacht - ausgelöst werden könnte, kann man das so konfigieren, dass der ViewsCache for anonymous gelöscht resp. neu aufgebaut wird?
Ich streube mich im Moment dagegen, diese Anzeigen in einen internen Breich zu legen, weil jeder Klick und jede Eingabe mehr möglichweise/wahrschinlich zu weniger Akzeptenz meiner Nutzer führt.
Btw: wo bezieht man dieses Wissen für Drupal 8?
Deutschsprachige Literatur gibt es noch nicht und in der englischen werden die Grundlagen lang und breit erklärt, aber nicht solche Dinge - habe ich jedenfalls noch nicht gefunden.
Oder hat sich das gegenüber den alten Version nicht so viel geändert, dass es so etwas wie langjährige Erfahrung ist?
Zitat: Falls der Cronjob
am 15.03.2017 - 14:36 Uhr
Falls der Cronjob unabhängig von einem User - etwa um Mitternacht - ausgelöst werden könnte, kann man das so konfigieren, dass der ViewsCache for anonymous gelöscht resp. neu aufgebaut wird?
Ja,klar.
Ich streube mich im Moment dagegen, diese Anzeigen in einen internen Breich zu legen, weil jeder Klick und jede Eingabe mehr möglichweise/wahrschinlich zu weniger Akzeptenz meiner Nutzer führt.
das cache leeren sollte bestimmt kein Grund für sowas sein.
Btw: wo bezieht man dieses Wissen für Drupal 8?
Da hat sich nach meinem Wissensstand nicht viel geändert. Wenn du drush hast, ist es das optimale, es geht aber auch einfach durch zeitgesteuertes Auslösen des cron-html-links (siehe oben). Den cron link für deine Website siehst du u.a. im drupal statusreport.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Rufe doch mal den cron als
am 15.03.2017 - 14:38 Uhr
Rufe doch mal den cron als anonymer über den html-cronlink auf und gehe als anonymer mit einem anderen browser danach auf deine viewspage, dann siehst du, ob durch den cron der cache geleert wurde.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Zitat:Zitat:Ich streube
am 15.03.2017 - 14:40 Uhr
Ich streube mich im Moment dagegen, diese Anzeigen in einen internen Breich zu legen, weil jeder Klick und jede Eingabe mehr möglichweise/wahrschinlich zu weniger Akzeptenz meiner Nutzer führt.
das cache leeren sollte bestimmt kein Grund für sowas sein.
nein, aber das (lästige) Anmelden.
Den cron link für deine Website siehst du u.a. im drupal statusreport.
ja. Ich habe nur die cron.php nirgendwo entdeckt, weil ich dachte, man sollte/könnte diese bearbeiten.