Dengan populariti aplikasi web, semakin ramai pembangun menggunakan bahasa Python dan rangka kerja webnya Django untuk membina aplikasi yang cekap. Artikel ini akan memperkenalkan beberapa teknik Django lanjutan untuk menjadikan aplikasi anda lebih cekap.
1. Gunakan caching untuk meningkatkan prestasi
Dalam aplikasi, sesetengah data hanya perlu dikemas kini dengan kerap tanpa menanyakan pangkalan data untuk setiap permintaan. Django mempunyai sistem caching terbina dalam dan menyokong pelbagai bahagian belakang caching, seperti Memcached, Redis, dsb. Anda boleh mengkonfigurasi bahagian belakang cache dan mendayakan cache dalam fail settings.py:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } MIDDLEWARE_CLASSES = [ 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', ]
Konfigurasi di atas menggunakan Memached sebagai bahagian belakang cache dan membolehkan caching dalam middleware.
2. Gunakan Saderi untuk tugas tak segerak
Dalam aplikasi, sesetengah tugasan tidak perlu dilaksanakan serta-merta dan boleh diproses secara tidak segerak di latar belakang, yang boleh meningkatkan prestasi aplikasi. Django boleh digabungkan dengan Celery untuk melaksanakan pemprosesan tugas tak segerak. Saderi ialah baris gilir tugas teragih paling popular Python Ia boleh mengendalikan sejumlah besar tugas dan menyokong berbilang baris gilir mesej.
Pasang Saderi:
pip install celery
Sediakan Saderi:
#settings.py CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0' CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' # app/tasks.py from celery import Celery app = Celery('tasks') @app.task def add(x, y): return x + y
Konfigurasi di atas menggunakan Redis sebagai baris gilir mesej dan storan hasil, dan mentakrifkan tugas pengkomputeran. Mulakan Saderi:
celery -A proj worker -l info
3 Gunakan pertanyaan pangkalan data yang dioptimumkan
Dengan menggunakan teknik pengoptimuman pertanyaan, anda boleh mengurangkan operasi I/O pangkalan data dan dengan itu meningkatkan prestasi aplikasi.
Apabila berbilang objek perlu disoal, berbilang pertanyaan akan memakan banyak masa dan sumber. Anda boleh menggunakan select_related() untuk mengoptimumkan:
class Author(models.Model): name = models.CharField(max_length=200) class Book(models.Model): title = models.CharField(max_length=200) author = models.ForeignKey(Author) #不优化 for book in Book.objects.all(): print(book.author.name) #优化 for book in Book.objects.select_related('author').all(): print(book.author.name)
Apabila aplikasi menanyakan sejumlah besar rekod, menggunakan indeks boleh mengurangkan masa pertanyaan dengan ketara. Django menggunakan ORM untuk mengendalikan pangkalan data Anda boleh mentakrifkan indeks dengan menambahkan parameter db_index pada medan model:
class Book(models.Model): title = models.CharField(max_length=200, db_index=True) author = models.ForeignKey(Author, db_index=True)
4. Gunakan Django Debug Toolbar untuk nyahpepijat aplikasi
Django Debug Toolbar ialah pemalam pihak ketiga Boleh memberikan analisis prestasi aplikasi masa nyata dan maklumat penyahpepijatan.
Pasang dan konfigurasi Django Debug Toolbar:
rreeeKonfigurasi di atas mendayakan Django Debug Toolbar dan menambahkannya pada middleware. Apabila mengakses aplikasi dalam penyemak imbas, bar alat akan dipaparkan, dan anda boleh melihat maklumat seperti masa permintaan, pertanyaan SQL, cache, dll.
Ringkasan
Di atas ialah panduan untuk aplikasi rangka kerja Web Django yang cekap Dengan menggunakan caching, Celery, pengoptimuman pertanyaan dan Django Debug Toolbar, aplikasi boleh dibuat dengan lebih cekap. Sudah tentu, sebagai tambahan kepada teknik yang dinyatakan di atas, terdapat banyak kaedah pengoptimuman lain, yang perlu dipilih dan digunakan mengikut senario dan keperluan tertentu.
Atas ialah kandungan terperinci Django Advanced: Panduan untuk Aplikasi Cekap Rangka Kerja Web Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!