In einem neuen Projekt verwenden wir wp-super-cache (das bevorzugte Plugin des Clients), um die statischen HTML-Dateien für benutzerdefinierte Inhaltstypen zu erstellen. Aber wir versuchen herauszufinden, ob alles richtig zwischengespeichert wird.
Dies ist eine zweiteilige Frage.
1) Das von uns erstellte Thema verwendet Seitenvorlagen, um JSON auszugeben, das über Ajax-Aufrufe aufgenommen wird. dh Wenn Sie auf die Seite "theurl.com/sample" klicken, erhalten Sie reinen JSON. Während es für jede Seite und jeden Beitrag eine Nicht-Javascript-Version gibt, steuert Ajax das Front-End dieses Themas. Wir haben die Kopf- und Fußzeile in diesen Dateien entfernt, damit es sich um reinen Json handelt, und wir versuchen herauszufinden, wie festgestellt werden kann, ob der Json zwischengespeichert wird. Theoretisch würden die Daten zwischengespeichert, da es sich technisch gesehen um eine Seite handelt, die von WordPress bereitgestellt wird. Aber wie können wir herausfinden, ob es zwischengespeichert wird?
2) Wir verwenden das json api-Plugin, um auch bestimmte Post-Daten bereitzustellen. http://wordpress.org/extend/plugins/json-api/ In diesem Beispiel verwenden wir die Standardausgabemethode des Plugins und rufen diese Seite auf: my url.com/category/news?json=1 - Does weiß jemand, wie wir überprüfen können, ob diese Ausgabe zwischengespeichert wird? Wenn es nicht zwischengespeichert wird, mit welcher Methode würde dies geschehen?
Es scheint nicht viele Informationen zu diesem Thema zu geben. Helfen Sie also einem Bruder, um überzeugende und optimierte WordPress-Websites zu erstellen
WP Super Cache überprüft die Seiten Ihrer WordPress-Site auf HTML-Tags, bevor sie zwischengespeichert werden.
Ihre Seiten haben höchstwahrscheinlich kein
</html>
Tag (häufiges Problem). Versuchen Sie in diesem Fall, etwas hinzuzufügen. Dies//</html>
ist eine Problemumgehung. WP Super Cache sollte dann zwischengespeicherte Versionen Ihrer Seiten generieren.Warum macht es WP Super Cache so? Es gibt keine offensichtliche Möglichkeit, zu überprüfen, ob eine Seite nur zur Hälfte geladen ist, als zu überprüfen, ob alle grundlegenden HTML-Tags vorhanden und ordnungsgemäß geschlossen sind.
In Donnchas eigenen Worten (dem Entwickler von WP Super Cache) heißt es : "Es soll verhindern, dass die Hälfte der generierten Seiten zwischengespeichert wird."
quelle
SICHERHEITSHINWEIS: Diese (und die anderen Lösungen) sollten nur verwendet werden, wenn Sie eine Möglichkeit haben, den von
Content-Type: text/html
WP Super Cache gesendeten Header mit dem entsprechendenapplication/json
Wert zu überschreiben . Wenn Sie JSON as senden,text/html
wird es vom Browser als HTML gerendert. Dies kann möglicherweise ein XSS-Vektor sein.Es sieht so aus, als müsste dies auf Serverebene erfolgen, da WPSC nicht die erforderlichen Hooks bereitstellt.
So habe ich es gemacht. Es ähnelt dem Ansatz von Liang, erfordert jedoch keine direkte Änderung des Plugins und verfügt über ein präziseres Regex-Muster.
Wenn Sie Version 2 der REST-API verwenden, sollten Sie
REST_REQUEST
anstelle von verwendenJSON_REQUEST
.Es wäre gut, 22 und 79 zu abonnieren, falls sich etwas in WP Super Cache ändert.
quelle
XMLHttpRequest cannot load http://api.mywebsite.com/wp-json/wp/v2/posts. Origin http://mywebsite.com is not allowed by Access-Control-Allow-Origin.
Wie kann ich ihn beheben?Access-Control-Allow-Origin
Header, um die ursprungsübergreifende Anforderung zuzulassen. Ich vermute, dass die zwischengespeicherten Seiten diesen Header nicht ausgeben.Ich bin auch diesem Problem begegnet. Ich hatte meinen Code als API geschrieben. Wenn der Antworttyp XML war, funktionierte der Cache. Aber als der Antworttyp json war, hat es nicht funktioniert.
Ich brauche einige Stunden, um diesen Fehler zu beheben.
Das ist Arbeit für mich.
Aktualisieren Sie einfach Ihren Code wie meine Änderungen.
Es funktioniert jetzt für mich.
quelle
wp_cache_eof_tags
Filter verwenden, anstatt das Plugin direkt zu ändern.