Stylesheet Switching und Caching

Ich implementiere eine Website, auf der Benutzer Stylesheets wechseln können (um eine hochauflösende Version für Menschen mit Sehbehinderung anzuzeigen). Der Switcher ändert im Wesentlichen nur das ref in das entsprechende Stylesheet.

Ich habe jedoch festgestellt, dass dies zu Problemen führen wird, wenn ich Caching aktiviere (entweder mit WP Supercache oder W3 Total Cache), da nur eine Version der Seite zwischengespeichert und dem Benutzer angezeigt wird.

Irgendwelche Gedanken zu möglichen Lösungen?

Solutions Collecting From Web of "Stylesheet Switching und Caching"

Ich benutze W3TC, also sind dies Ansätze, die ich dafür aufstellen kann:

  1. Fragment-Caching, um diesen Teil der Seite auszuschließen, reduziert die Cache-Effektivität insgesamt.

  2. Identifizieren Sie die Seite mit dem geschalteten Argument “Stylesheet by Query”, deaktivieren Sie das Caching solcher Seiten.

  3. Identifizieren Sie die Seite mit dem geschalteten Stylesheet nach URL-Endpunkt, deaktivieren Sie das Zwischenspeichern einer solchen Maske.

  4. Implementieren Sie Stylesheet-Schalter über JavaScript (nicht wirklich W3TC-spezifisch).

Idee: Wenn Sie die Stile in die filemtime() , verwenden Sie filemtime() für die version . Wenn Änderungen an Ihrem vorherigen Stylesheet gefunden werden, wird das Caching verhindert und ein neues Stylesheet wird geladen.

Stellt sich heraus, die Antwort ist ziemlich einfach (zumindest für WP Supercache).

  1. Verwenden Sie entweder PHP oder Legacy-Caching (dh nicht mod_rewrite)
  2. $wp_super_cache_late_init = 1; späte Initialisierung (entweder von der Benutzeroberfläche aus – empfohlen, oder indem Sie $wp_super_cache_late_init = 1; in wp-content/wp-cache-config.php
  3. Verwenden Sie die statement , um den Inhalt zu umbrechen, der dynamisch bleiben soll.

Ein Beispiel:

 < ?php display_high_contrast_link(); ?> 

Wie Sie sehen können, wurde der dynamische Inhalt zweimal hinzugefügt – aus den WP Supercache FAQ

Der erste Code wird ausgeführt, wenn die Seite zwischengespeichert wird, während der zweite Codeabschnitt ausgeführt wird, wenn die zwischengespeicherte Seite für den nächsten Besucher bereitgestellt wird.