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))