Saya biasa views_get_view_result()
mendapatkan hasil dari tampilan karena nyaman pada waktu itu. Hasil kueri jarang berubah; Saya bisa menggunakan cache pandangan selama 6 hari.
Jika saya ingin mengonversinya menjadi panggilan ke db_query()
bagaimana saya bisa mengaktifkan caching?
db_query()
, dan harus men- cache nilai dari$results->fetchAll()
dan bukan$results
merupakan kunci untuk benar-benar membuatnya berfungsi.Saya tidak berpikir layer DB memiliki mekanisme caching bawaan (meskipun saya mungkin salah), tetapi Anda bisa menggunakan API cache default.
Ini hanya contoh dasar yang akan men-cache hasil query untuk mendapatkan node dari tipe tertentu:
sumber
Selain standar cache_set / cache_get mekanisme yang Drupal menyediakan, jika Anda menggunakan MySQL sebagai database Anda, maka Anda dapat mengaktifkan cache query , yang dapat cache hasil dari pandangan, atau query database lainnya, transparan. mysqltuner dapat membantu menentukan nilai bagus untuk ukuran cache.
Perhatikan bahwa jika Anda melakukan banyak penulisan ke basis data, maka caching kueri menjadi kurang efektif karena cara strategi pembatalan cache bekerja (penulisan ke tabel membatalkan semua entri yang SELECT FROM atau JOIN table itu).
Ada juga mekanisme caching untuk PostgreSQL , tapi saya tidak punya pengalaman langsung dengannya.
sumber
Saya baru-baru ini menemukan modul Tindakan Cache . Dengan modul ini, Anda dapat mengatur cache pandangan Anda ke Cache yang dipicu oleh aturan dan membuat aturan untuk membatalkan cache pada tampilan dan tampilan tampilan tertentu.
Misalnya, cache untuk tampilan yang mencantumkan node dari tipe konten tertentu dapat dikosongkan ketika node baru dibuat dari tipe konten tersebut.
sumber