Kapan saya harus menggunakan API Transients?

15

Saya belum pernah menggunakan API Transients sebelumnya dan bertanya-tanya apakah ada yang punya panduan tentang kapan menggunakannya. The Artikel Codex menyiratkan bahwa sebagai pengembang tema saya mungkin ingin mengatur setiap baruWP_Query() sebagai transien; Saya berasumsi hal yang sama dapat dikatakan untuk pertanyaan $ wpdb langsung dan query_posts(). Apakah itu berlebihan? Dan / Atau ada tempat lain yang harus saya gunakan untuk menggunakannya?

Saya sering menggunakan plugin caching di situs saya (biasanya W3 Total Cache) dan sepertinya menggunakan Transients dapat meningkatkan efektivitas plugin tetapi saya tidak ingin menjadi gila membungkus semuanya dalam transien jika itu bukan praktik terbaik.

Michelle
sumber
Terima kasih semuanya, saya berharap saya dapat menandai lebih dari satu jawaban sebagai 'solusi'. Info hebat, sangat kami hargai!
Michelle

Jawaban:

15

Transien sangat bagus ketika Anda melakukan pertanyaan kompleks dalam tema dan plugin Anda. Saya cenderung menggunakan transien untuk hal-hal seperti menu dan menunjukkan hal-hal lain seperti Tweet dari Twitter di bilah sisi misalnya. Saya tidak akan menggunakannya untuk benar-benar segalanya - jadi hanya data sementara yang bisa di-cache.

Ingatlah bahwa jika Anda menggunakan sesuatu seperti Memcached dengan transien, maka Anda akan melihat peningkatan kinerja yang sangat besar. Aturan dengan transien adalah untuk tidak menggunakannya untuk data yang tidak boleh kadaluwarsa karena sebenarnya hanya untuk data sementara dan perlu diingat bahwa transien tidak selalu disimpan dalam database.

Beberapa kegunaan untuk transien :

  • Permintaan basis data yang kompleks dan khusus
  • Menu navigasi wordpress
  • Widget bilah samping yang menampilkan info suka; tweet, daftar pengunjung situs terbaru atau aliran foto Flickr
  • Caching tag cloud

Artikel ini adalah artikel yang sangat informatif dengan tolok ukur cepat yang menunjukkan bagaimana transien dapat mempercepat situs Anda dan bahkan memiliki beberapa contoh. Artikel lain ini juga memiliki beberapa contoh hebat penggunaan transien yang dapat membantu Anda memahami apa yang harus digunakan juga.

Dwayne Charrington
sumber
2
Penggunaan lain: caching permintaan HTTP eksternal. Seperti memukul API twitter. Jangan lakukan itu di setiap halaman memuat, cache hasil dengan sementara.
chrisguitarguy
10

Ada beberapa mekanisme caching di WordPress dan mekanismenya berbeda, tergantung pada pilihan cache objek (asli atau tidak):

+-----------+-------------------------+---------------------+
|           |         Native          | Object cache plugin |
+-----------+-------------------------+---------------------+
| Option    | Persistent (database)   | N/A                 |
| Transient | Persistent (database)   | Persistent (varies) |
| Cache     | Non-persistent (memory) | Persistent (varies) |
+-----------+-------------------------+---------------------+

Singkatnya apa artinya ini adalah bahwa transien selalu persisten (akan bertahan di antara banyak halaman tidak seperti Cache secara asli), tetapi itu akan menggunakan penyimpanan khusus jika disediakan (tidak seperti Opsi).

Ini membuat transien menjadi pilihan yang paling fleksibel untuk caching.

Namun dengan fleksibilitas muncul kerumitan arus dan ada beberapa nuansa dengan mereka (seperti batas pada panjang nama, perilaku yang berbeda dengan dan tanpa kedaluwarsa, kurangnya pengumpulan sampah) yang membuatnya lebih kompleks dari yang terlihat.

Secara keseluruhan:

  • gunakan Opsi untuk menyimpan hal-hal yang harus gigih
  • gunakan Transients untuk melakukan caching apa pun
  • gunakan Cache ketika Anda memiliki pemahaman yang sangat baik dari ketiganya dan tahu bahwa Cache cocok menggunakan case lebih baik daripada yang lain (yang tidak akan sering)
Jarang
sumber
3

Saya pikir kode dari Sterling dapat ditingkatkan dengan tidak memanggil fungsi get_transient dua kali. Sebagai gantinya simpan hasil pertama dalam variabel sementara. Karena ide di balik API sementara Tran;

private function _get_data( $query) {
    $result = get_transient( $query );
    if ( $result ) {
       return $result;
    } else { 
       return $this->_get_query( $query ); 
    }
}
Thomas
sumber
2

Jawaban Singkat: Anda harus menggunakannya kapan / di mana Anda bisa.

Jawaban panjang:

API Transien adalah untuk caching. Jadi, Anda ingin menggunakannya sebanyak yang Anda bisa. Anda dapat menulis fungsi yang melakukan ini untuk Anda.

Itu tidak berlebihan dan jika dilakukan dengan benar berakhir menjadi cukup elegan:

// If the transient isn't false, then you can just get the cached version.
// If not, we'll call another function that runs a database query.
private function _get_data( $query) {
    return
    ( get_transient( $query ) ) ?
    get_transient( $query ) :
    $this->_get_query( $query );
}

// After you make the query, set the transient so you can leverage on caching plugins.
private function _get_query( $query ) {
  // Database logic. Results go to $results.
  ...
  set_transient( $query, $results , 0 ); // 0 Means cache for as long as you can.
}
Sterling Hamilton
sumber
2

API transien sangat berguna saat Anda mengambil data dari sumber eksternal seperti Facebook, Twitter.

Untuk mendapatkan ide yang lebih jelas tentang apa itu API Transien dan apa bedanya dengan fungsi Cache WordPress, saya sarankan untuk menonton pembicaraan Otto dan Nanic dari WordCamp San Francisco 2011

Mamaduka
sumber