Aquí hay una breve lista que ayudará:
* use NGINX (o un CDN) para servir activos estáticos comprimidos
* use NGINX para hacer un round robin en varios servidores web que ejecutan Django + Gunicorn
* asegúrese de que sus archivos como favicon, robots.txt, existan y no estén en 404
* use los índices de la base de datos con prudencia para consultas complejas (evite escaneos de tabla completa)
* caché resultados de consultas complicadas en Memcache / Redis
* use Redis para clasificaciones / caché / pub / sub (es realmente rápido)
* minimizar todo el front-end
* use Celery (o similar) para descargar las solicitudes aplicables a las colas asíncronas
* use django-debug-toolbar para encontrar cuellos de botella
* almacenar sesiones en Redis, no una tabla SQL
* considere configurar Gunicorn para usar Gevent en lugar de hilos (no siempre es posible)
* configure los tiempos de espera de NGINX correctamente, no permita que las solicitudes se cuelguen por más de unos segundos
En mi opinión, la decisión de diseño más importante que puede tomar desde el principio: intente crear aplicaciones de una sola página del lado del cliente utilizando enrutadores backbone.js (o algo similar). Esto evitará recargas de página completa (sin pasar por la generación de plantillas / consultas ORM de Django) y obligará a realizar mucho trabajo en el navegador del cliente. Esto puede requerir un RESTAPI, y si es así, use Tastypie o DjangoRestFramework.
- ¿Debo usar un correo electrónico alojado en mi dominio en lugar de usar Gmail?
- ¿Qué tutorial de Rails 3 para principiantes recomendarías?
- ¿Es Java mejor que Python para hacer un sitio web?
- ¿Es legítimo compartir contenido de terceros en un sitio web?
- Si una imagen se carga en una página web y luego se carga en una página diferente pero en el mismo sitio web, ¿se descargará nuevamente o se guardará en el navegador?