TL; DR
- Der WordPress-Teil der vorübergehenden Verarbeitung ist solide, alles ist ziemlich präzise
- Transienten verwenden den Objektcache anstelle des Datenspeichers für nicht standardmäßige Implementierungen
- Dies bedeutet, dass einige Back-End-Cache-Systeme den Cache entfernen, auf den in letzter Zeit nicht zugegriffen wurde
- Fazit: Es ist kein WordPress-Fehler, es hängt nur davon ab, wie Ihr Back-End-Cache eingerichtet ist
Sie könnten Transienten präziser machen, aber es erfordert eine Optimierung des Back-End-Cache, die ich nicht empfehle, wenn Sie nicht wissen, was Sie tun. Zu viel Cache könnte den gegenteiligen Effekt haben.
Aber nehmen Sie auch dann nicht an, dass es 100% genau ist.
Aus dem WordPress-Codex :
Jeder scheint falsch zu verstehen, wie ein vorübergehender Ablauf funktioniert. Das lange und kurze daran ist: Vorübergehende Ablaufzeiten sind eine maximale Zeit. Es gibt kein Mindestalter. Transienten verschwinden möglicherweise eine Sekunde nach dem Einstellen oder 24 Stunden, sind aber nach Ablauf der Gültigkeitsdauer nie mehr vorhanden.
Sie sollten immer eine Fallback-Methode haben.
Warum passiert es?!
WordPress macht Transienten nur ungültig, wenn versucht wird, sie zu lesen (was in der Vergangenheit zu Problemen bei der Speicherbereinigung geführt hat). Dies ist jedoch für andere Backends nicht garantiert.
Transienten verwenden den Objektcache für nicht standardmäßige Implementierungen. Der wirklich wichtige Teil, der hier zu beachten ist, ist, dass der Objektcache ein Cache und absolut kein Datenspeicher ist. Dies bedeutet, dass der Ablauf ein Höchstalter ist, kein Mindest- oder Sollwert.
Ein Ort, an dem dies leicht passieren kann, ist die Einstellung von Memcache im LRU-Modus (Least Recent Used). In diesem Modus verwirft Memcache automatisch Einträge, auf die in letzter Zeit nicht zugegriffen wurde, wenn Platz für neue Einträge benötigt wird. Dies bedeutet, dass Daten, auf die weniger häufig zugegriffen wird (wie sie von Cron-Daten verwendet werden), verworfen werden können, bevor sie ablaufen.
Lesen Sie mehr aus diesem Artikel , es ist sehr gut erklärt.
Caching?
Es gibt viele verschiedene Systeme, aber hier ist ein Beispiel dafür, wie das Zwischenspeichern von MySQL-Datenbanken im Allgemeinen funktioniert. Ich bin mir nicht sicher, wie hilfreich es ist, das Zwischenspeichern von Transienten zu verstehen, aber ich denke, es könnte nicht schaden.
- Daten aus jeder unterschiedlichen Abfrage werden zwischengespeichert
- Jede zwischengespeicherte Daten erhält einen Wert (kompliziertere Abfrage
==
höherer Wert)
- Diese Werte werden dekrementiert (wie ein Countdown-Timer, wenn Sie so wollen)
- Das Caching-System überprüft diese Werte in Intervallen
- Wenn einer dieser Werte Null erreicht, wird dieser Cache zerstört
- Wenn dieselbe Abfrage erneut ausgeführt wird, wird der Wert auf den Anfangswert zurückgesetzt
Also ... Was können Sie daraus schließen? Es macht keinen Sinn, Transienten einzustellen, die:
- Zu einfach
- Nicht häufig verwendet
Weil diese in den meisten Fällen sehr schnell zerstört werden. Ich hoffe, dies gibt Ihnen ein klareres Bild davon, wie das Caching im Allgemeinen funktioniert. Es priorisiert häufige und komplizierte Daten gegenüber einfachen und selten verwendeten Daten.
Hinweis: Die Cache-Erklärung enthält viele Verallgemeinerungen, die das Verfolgen und Verstehen erleichtern.
is_admin
sicherzustellen, dass Sie die einzige Person sind, die ihn überprüft, und keine anderen Anrufe oder Überprüfungen von Ihr Browser löst es unbeabsichtigt aus. Stärkere Testkontrollen!