caché es una parte importante o una aplicación web, pero no existe una solución mágica que se ajuste a cada proyecto. Trabajar en optimizaciones antes de que tu aplicación funcione es una mala idea. Antes de preguntarse dónde debe implementar una capa de caché, el primer paso es asegurarse de que su aplicación funcione bien (aunque sea lentamente) sin ninguna optimización de caché.
Cuando se alcanza este primer paso, puede comenzar a perfilar la aplicación, enumerando las funciones que parecen usar muchos recursos (ya sea CPU, memoria, E/S, acceso a la base de datos) o tomar muchas tiempo para completar (generalmente debido a los mismos síntomas).
Una vez que tenga una lista de características que usted piensa que puede ser optimizado con un sistema de caché, hay dos cuestiones que hay que preguntarse:
"¿Cómo puedo mejorar todas estas características en el mismo time "(macro focus): una respuesta obvia a esta suele ser la caché de acceso a datos. Por lo general, no desea enviar la misma consulta al servidor de su base de datos una y otra vez si los datos que obtiene a cambio son siempre los mismos. Por lo tanto, almacenar esta clase de datos en caché, con una vida útil inteligente, siempre será una buena idea.
"Cómo puedo mejorar cada función" (micro focus): Esto es complicado, y necesita comprender muy bien su aplicación para resolver esto. Algunos datos pueden almacenarse en caché, otros no, algunos no. Por lo general, un depurador y un generador de perfiles son excelentes herramientas para este paso, ya que lo ayudan a estar seguro de por qué una característica es lenta y le dan pistas sobre cómo deben optimizarse.
Las optimizaciones que vas a averiguar podría estar relacionado con cualquier capa de la aplicación (presentación, lógica de negocio, datos), pero eso no quiere decir que usted debe aplicar a todos ellos. Hay varias cosas importantes que debe tener en cuenta:
- ¿Esta característica realmente necesita ser optimizada? (¿Es una ganancia notable para el cliente? Para el hardware? Para toda la aplicación? Para otras aplicaciones?)
- ¿Qué ganancia de rendimiento puedo lograr? (1%, 200%, ...)
- ¿Cuánto tiempo tardaré en optimizarlo? (1 hora, 12 días, ...)
- ¿Qué tan riesgoso es optimizarlo? (¿Podría romper las cosas para la aplicación? Para el cliente?)
Una vez que tenga las respuestas a estas preguntas, es hora de hablar de esto con su jefe de proyecto, con sus colegas, o incluso con personas que don No trabaje en la aplicación con usted. Tener una opinión neutral es bueno, además de tener opiniones no técnicas (o menos técnicas). Hablar con estas personas debería ayudarlo a descubrir qué se debe hacer y qué no.
En este momento debe tener una lista de optimizaciones que es bastante clara, que ha pensado varias veces, y no debería tener problemas para codificarlas y probarlas.
Acepto que el almacenamiento en caché necesita entender bien su aplicación. Pero no creo que debamos comenzar a escribir la solución de almacenamiento en caché después de terminar la aplicación en el primer paso como mencionaste. Pero debemos planearlo antes. Dado que las partes principales que necesitarán almacenamiento en caché serán obvias desde el principio, pero más adelante también descubrirán más partes que también necesitan atención. Por ejemplo, los diccionarios y las búsquedas son los primeros ciudadanos en el mundo del almacenamiento en caché, por lo que debe planificar desde el principio. Si lo pospones hasta el final, deberás modificarlo en cualquier lugar que toque esta parte. –