Dalam proyek baru kami menggunakan wp-super-cache (plugin pilihan klien) untuk membuat file html statis untuk tipe konten khusus. Tapi kami berusaha mencari tahu apakah semuanya di-cache dengan benar.
Ini adalah pertanyaan 2 bagian.
1) Tema yang kami buat menggunakan templat halaman untuk menampilkan json yang dicerna melalui panggilan ajax. yaitu. jika Anda menekan halaman: theurl.com/sample - Anda akan mendapatkan json murni. Meskipun ada versi non-javascript dari setiap halaman dan posting, Ajax menggerakkan ujung depan tema ini. Kami telah menghapus header dan footer di file-file ini sehingga itu adalah json murni, dan kami mencoba mencari cara untuk menentukan apakah json sedang di-cache. Secara teori data akan di-cache karena secara teknis halaman ini dilayani oleh wordpress. Tapi, bagaimana kita mencari tahu apakah itu sedang di-cache?
2) Kami menggunakan plugin json api untuk menyajikan data posting tertentu juga. http://wordpress.org/extend/plugins/json-api/ Untuk contoh ini, katakanlah kita menggunakan metode output plugin default dan mengenai halaman ini: url.com/category/news?json=1 - Apakah ada yang tahu bagaimana kami dapat memverifikasi jika output ini di-cache? Jika tidak di-cache, metode apa yang akan membuat ini terjadi?
Sepertinya tidak ada banyak informasi tentang ini secara online, jadi dengan semangat menciptakan situs wordpress yang menarik dan dioptimalkan, bantu seorang saudara
WP Super Cache memeriksa halaman situs WordPress Anda untuk beberapa tag HTML sebelum di-cache.
Halaman Anda kemungkinan besar tidak memiliki
</html>
tag (masalah umum), dalam hal ini, coba tambahkan sesuatu seperti//</html>
- itu solusinya, dan WP Super Cache kemudian harus menghasilkan versi cache halaman Anda.Mengapa WP Super Cache melakukannya seperti itu? Lihat, tidak ada cara yang jelas untuk memeriksa apakah halaman hanya setengah dimuat, daripada memeriksa apakah semua tag HTML dasar ada dan ditutup dengan benar.
Dalam kata-kata Donncha (pengembang WP Super Cache) sendiri , "Ini untuk menghentikan setengah halaman yang dihasilkan di-cache."
sumber
CATATAN KEAMANAN: Ini (dan solusi lainnya) tidak boleh digunakan kecuali jika Anda memiliki cara untuk mengganti
Content-Type: text/html
header yang dikirim WP Super Cache dengan nilai yang sesuaiapplication/json
. Mengirim JSONtext/html
akan menyebabkan browser merendernya sebagai HTML, yang berpotensi menjadi vektor XSS.Sepertinya itu perlu dilakukan pada lapisan server, karena WPSC tidak menyediakan kait yang diperlukan.
Beginilah cara saya melakukannya. Ini mirip dengan pendekatan Liang, tetapi tidak perlu memodifikasi plugin secara langsung, dan memiliki pola regex yang lebih tepat.
Jika Anda menggunakan v2 dari REST API, Anda harus menggunakan
REST_REQUEST
bukanJSON_REQUEST
.Akan lebih baik untuk berlangganan ke 22 dan # 79 jika terjadi perubahan dalam WP Super Cache.
sumber
XMLHttpRequest cannot load http://api.mywebsite.com/wp-json/wp/v2/posts. Origin http://mywebsite.com is not allowed by Access-Control-Allow-Origin.
Bagaimana cara memperbaikinya?Access-Control-Allow-Origin
header untuk membolehkan permintaan lintas asal. Saya menduga bahwa halaman yang di-cache tidak menampilkan header itu.Saya juga menemui masalah ini. Saya telah menulis beberapa kode saya menjadi API. Saat tipe respons adalah XML, cache berfungsi. Tetapi ketika tipe respons adalah json, itu tidak berhasil.
Butuh beberapa jam saya untuk memperbaiki bug ini.
Ini bekerja untuk saya.
Cukup perbarui kode Anda seperti perubahan saya.
Ini bekerja untuk saya sekarang.
sumber
wp_cache_eof_tags
filter alih-alih memodifikasi plugin secara langsung.