Caché Apache · 3 min read · Jan 01, 2026
Caché con mod_cache de Apache en Debian Etch - Página 2
2.2 mod_mem_cache
La configuración de mod_mem_cache se encuentra en /etc/apache2/mods-available/mem_cache.conf:
vi /etc/apache2/mods-available/mem_cache.conf | |
Esta es la configuración predeterminada; si lo deseas, puedes modificarla. Una lista de directivas de configuración para mod_mem_cache está disponible aquí: http://httpd.apache.org/docs/2.2/mod/mod_mem_cache.html
Ahora habilitemos mod_cache y mod_mem_cache de la siguiente manera:
a2enmod cache
a2enmod mem_cache
/etc/init.d/apache2 force-reload¡Eso es todo! Con mod_mem_cache, no tienes que limpiar ningún directorio de caché.
3 Pruebas
Desafortunadamente, mod_cache no proporciona ninguna funcionalidad de registro, lo cual es malo si deseas saber si el registro está funcionando. Por lo tanto, creo un pequeño archivo de prueba PHP, /var/www/cachetest.php, que envía encabezados HTTP que le indican a mod_cache que debe almacenar en caché el archivo durante 300 segundos y que simplemente imprime la marca de tiempo:
vi /var/www/cachetest.php| "; ?> |
Ahora llama a ese archivo en un navegador; debería mostrar la marca de tiempo actual. Luego haz clic en la barra de direcciones del navegador y presiona ENTER para que la página se cargue nuevamente (¡no presiones F5 o el botón de recarga; esto siempre obtendrá una copia nueva del servidor en lugar de la caché!) - si todo va bien, aún deberías ver la antigua marca de tiempo en caché. Si esperas 300 segundos, deberías obtener una copia nueva del servidor en lugar de la caché.
4 Encabezados HTTP
La caché no funciona de inmediato; debes modificar tu aplicación web para que la caché pueda funcionar (es posible que tu aplicación web ya admita la caché; consulta la documentación de tu aplicación para averiguarlo). mod_cache almacenará en caché las páginas web solo si los encabezados HTTP enviados por tu aplicación web le indican que lo haga.
Aquí hay algunos ejemplos de encabezados que le indican a mod_cache no almacenar en caché:
- Encabezados Expires con una fecha en el pasado: “Expires: Sun, 19 Nov 1978 05:00:00 GMT”
- Ciertos encabezados Cache-Control: “Cache-Control: no-store, no-cache, must-revalidate” o “Cache-Control: must-revalidate, max-age=0”
- Encabezados Set-Cookie: una página no se almacenará en caché si se establece una cookie.
Así que si deseas que mod_cache almacene en caché tus páginas, modifica tu aplicación para no enviar dichos encabezados.
Si deseas que mod_cache almacene en caché tus páginas, puedes establecer un encabezado Expires con una fecha en el futuro, pero la forma recomendada es usar max-age:
"Cache-Control: must-revalidate, max-age=300"Esto le indica a mod_cache que almacene en caché la página durante 300 segundos (max-age); desafortunadamente, mod_cache no conoce la opción s-maxage (ver http://www.mnot.net/cache_docs/#CACHE-CONTROL), por eso debemos usar la opción max-age (que también le indica a tu navegador que almacene en caché; ten esto en cuenta si obtienes resultados inesperados). Si mod_cache conociera la opción s-maxage, podríamos usar “Cache-Control: must-revalidate, max-age=0, s-maxage=300”, lo que le indicaría a mod_cache, pero no al navegador, que almacene en caché la página.
Por supuesto, este encabezado es inútil si envías uno de los encabezados que no almacenan en caché (Expires en el pasado, Set-Cookie, etc.) al mismo tiempo.
Otro encabezado muy importante para la caché es este:
"Vary: Accept-Encoding"Esto hace que mod_cache mantenga dos copias de cada página en caché, una comprimida (gzip) y una sin comprimir, para que pueda entregar la versión correcta según las capacidades del agente de usuario/navegador. Algunos agentes de usuario no entienden la compresión gzip, por lo que deberían recibir la versión sin comprimir.
Así que aquí está el resumen: usa los siguientes dos encabezados si deseas que mod_cache almacene en caché:
“Cache-Control: must-revalidate, max-age=300”
“Vary: Accept-Encoding”
y asegúrate de que no se envíen Expires con una fecha en el pasado, cookies, etc.
Si tu aplicación está escrita en PHP, puedes usar la función header() de PHP para enviar encabezados HTTP, por ejemplo, así:
header(“Cache-Control: must-revalidate, max-age=300”);
header(“Vary: Accept-Encoding”);
Esta página es una lectura obligada si deseas aprender más sobre encabezados HTTP y caché: http://www.mnot.net/cache_docs/
5 Enlaces
- Apache: http://httpd.apache.org/
- mod_cache: http://httpd.apache.org/docs/2.2/mod/mod_cache.html
- mod_disk_cache: http://httpd.apache.org/docs/2.2/mod/mod_disk_cache.html
- mod_mem_cache: http://httpd.apache.org/docs/2.2/mod/mod_mem_cache.html
- Guía de Caché de Apache: http://httpd.apache.org/docs/2.2/caching.html
- Tutorial de Caché: http://www.mnot.net/cache_docs/
- Debian: http://www.debian.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.