Besteht die Gefahr, alle Transienten zu löschen?


9

Ich habe eine große Site für einen Client und da es sich um eine wirklich angepasste WordPress-Installation mit vielen Erweiterungen der Funktionalität handelt, kann ich die Caching-Plugins nicht verwenden.

Um die Leistung zu verbessern, habe ich einen Großteil der Website mithilfe von Transienten erstellt (z. B. Navigation, Google Maps mit allen Markierungen usw.) und den dynamischen Inhalt dynamisch belassen.

Das Problem hier ist, wenn ich etwas ändere, muss ich den spezifischen Übergang manuell löschen, um das aktuelle Ergebnis zu sehen. Die Seite zeigt verschiedene Menüs und Googlemaps, wenn sie von einem anderen Kanal aus eingegeben werden. Ich habe also zehn Transienten für jeden Bereich.

Würden Sie eine Funktion erstellen, bei der ich alle auf einmal lösche (mit einer Liste der Namen des Transienten), oder ist es in Ordnung, einfach alle Transienten auf der Site zu löschen?

Es ist nicht wirklich so dringend, aber für die zukünftige Entwicklung würde ich gerne wissen, ob Sie Probleme mit solchen Dingen hatten und wie Sie alle Ihre Transienten verwalten.

Prost, Fischi


Antworten:


6

Für die Entwicklung würde ich empfehlen, immer mit WP_DEBUGset to zu arbeiten trueund Folgendes zu tun:

$key = 'transient_key';
if( !WP_DEBUG && ( false !== ($transient = get_transient($key)) ){

   /* Generate transient manually */
   $expiration = 24*60*60;//How long to keep for
   set_transient($key,$transient, $expiration);
}

Im Allgemeinen sollte das Löschen von Transienten in Ordnung sein, da davon ausgegangen werden sollte, dass sie sich nicht in der Datenbank befinden.


danke @stephen, ich habe diese Lösung in der Entwicklungsphase verwendet, sie aber in der Refactoring-Phase vor dem Start gelöscht. hätte das nicht tun sollen;) aber hatten Sie Ihrer Erfahrung nach jemals Probleme, Transienten manuell zu löschen?
Fischi

:) Danke für die Infos zum Löschen von Transienten. Ich dachte so etwas, war mir aber nicht ganz sicher.
Fischi

1
Nein, ich hatte nie Probleme, Transienten manuell zu löschen - außer wenn ich es satt habe und diesen Ansatz verwende :).
Stephen Harris

1

Sie sollten die verschiedenen Aktionen verknüpfen, die ausgeführt werden, wenn Dinge aktualisiert werden, um Transienten zu löschen und zu aktualisieren. Wenn beispielsweise das Navigationsmenü aktualisiert wird, wird die wp_update_nav_menuAktion ausgelöst. Verknüpfen Sie eine Funktion damit, um den Übergang Ihres Navigationsmenüs vorübergehend zu aktualisieren .


danke @Milo, dies ist eine gute Idee, aber für mich nicht verwendbar, da die Transienten nicht nur das Menü beeinflussen. Es werden ständig viele Inhalte (Sonderziele auf einer Karte) hinzugefügt, und die Website ist ziemlich voll - so erstelle ich zum Beispiel die Liste der neuesten POIs nur einmal pro Stunde, nicht nur auf derwp_update_nav_menu
fischi

Das war nur ein Beispiel: Aktualisieren Sie jeden Transienten bei jeder Aktion, mit der er verbunden ist
Milo,

Ja, du bist hier richtig. Allerdings sind nicht alle meine Transienten an eine Handlung gebunden. Einige von ihnen werden direkt in den Vorlagendateien verwendet (wenn ich große Listen erstelle) und enthalten das eigentliche HTML, das jeweils eine Stunde dauert. Für die Transienten, die auf ein langes Leben eingestellt sind, wie die von Ihnen erwähnte, verwende ich Ihre Methode :)
Fischi

1

Wäre es nicht besser, Ihre Entwicklung in einer Entwicklungsumgebung durchzuführen, damit die Notwendigkeit, Ihre Änderungen so zu sehen, wie sie vorgenommen werden, keine Auswirkungen auf die öffentliche Website hat?

Mit diesem Ansatz können Sie dann die Transienten in einer Zeit mit geringem Datenverkehr bereitstellen / in die Produktion befördern und spülen, ohne die Leistung der Site und die Benutzererfahrung zu beeinträchtigen.


Ja, wäre natürlich besser - aber ich habe das Projekt ein paar Wochen nach Beginn meines Geschäfts gestartet und seitdem viel gelernt. Ich baue gerade meine gesamte Infrastruktur auf - und ich plane, die benutzerdefinierten Designs und Plugins auf meinem Server zu entwickeln und, sobald sie fertig sind, ein Update auf den Websites mit der WordPress-Update-Funktion bereitzustellen. Ich gebe zu, dass dies nicht die beste Methode war, die ich dort gewählt habe.
Fischi

Ich denke, wir haben alle been there and done thatzu der einen oder anderen Zeit.
Steve
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.