TurboGears - Caching

Untuk meningkatkan kinerja aplikasi web, terutama jika itu terlibat dalam operasi yang panjang, teknik cache digunakan. TurboGears menyediakan dua jenis teknik caching -

Whole-page Caching

Ia bekerja pada tingkat protokol HTTP untuk menghindari seluruh permintaan ke server dengan browser pengguna, atau server proxy perantara (seperti Squid) mencegat permintaan dan mengembalikan salinan file yang di-cache.

Application-level Caching

Ini berfungsi dalam server aplikasi untuk menyimpan nilai yang dihitung ke dalam cache, seringkali merupakan hasil dari kueri database yang kompleks, sehingga permintaan di masa mendatang dapat menghindari keharusan untuk menghitung ulang nilai. Untuk aplikasi web, cache tingkat aplikasi menyediakan cara yang fleksibel untuk menyimpan hasil dari kueri kompleks sehingga total beban dari metode pengontrol tertentu dapat dikurangi menjadi beberapa kueri khusus pengguna atau kasus tertentu dan overhead rendering template .

Caching tingkat aplikasi

Seperti yang disebutkan sebelumnya, proyek TurboGears 'quickstarted' dikonfigurasi untuk mengaktifkan paket Beaker untuk dukungan caching. Beaker mendukung ujung belakang berikut yang digunakan untuk penyimpanan cache -

  • memory- Digunakan untuk penyimpanan per proses. Ini sangat cepat.

  • filesystem - penyimpanan per proses serta multi-proses.

  • DBM database - per proses, multi proses, cukup cepat.

  • SQLAlchemy database- penyimpanan per-database-server. Lebih lambat dibandingkan dengan opsi yang diberikan di atas.

  • Memcached - cache berbasis memori multi-server.

Pengontrol Caching

Untuk cache pengontrol cepat, a cached()dekorator tersedia. Seluruh badan pengontrol di-cache tergantung pada berbagai parameter permintaan. Definisitg.decorators.cached() dekorator adalah sebagai berikut

tg.decorators.cached(key, expire, type, 
   query-args, cache_headers, invalidate_on_startup, cache_response)

Deskripsi parameter adalah sebagai berikut -

Sr.No. Parameter & Deskripsi
1

key

Menentukan parameter pengontrol yang digunakan untuk menghasilkan kunci cache.

2

expire

Waktu dalam detik sebelum cache kedaluwarsa, Default-nya adalah "tidak pernah".

3

Type

dbm, memory, file, memcached, atau None.

4

cache_headers

Tuple nama header yang menunjukkan header respons.

5

invalidate_on_startup

Jika Benar, cache tidak valid setiap kali aplikasi dimulai atau dimulai ulang.

6

cache_response

respon harus di-cache atau tidak, default ke True.

Berikut adalah contoh caching pengontrol -

@cached(expire = 100, type = 'memory')
@expose()
def simple(self):
   return "This is a cached controller!"

Caching Level Template

Mesin template Genshi mengambil template dari cache jika isinya tidak berubah. Ukuran default cache ini adalah 25. Secara default, pemuatan ulang template otomatis adalah benar. Untuk meningkatkan kinerja, pengaturan berikut dapat dibuatapp_cfg.py -

[app:main]
genshi.max_cache_size = 100
auto_reload_templates = false

Untuk menyimpan template, Anda hanya perlu mengembalikan file tg_cache opsi dari pengontrol yang membuat template yang di-cache.

Tg_cache adalah kamus yang menerima kunci berikut -

  • key - Kunci cache. Default: Tidak ada.

  • expire - berapa lama cache harus tetap hidup. Default: tidak pernah kedaluwarsa

  • type - memori, dbm, memcache. Default: dbm.

Contoh berikut menggambarkan cache template -

@expose(hello.templates.user')
def user(self, username):
   return dict(user = username, tg_cache = dict(key = user, expire = 900))