Para el manejo de caché en Apache, debemos seguir los siguientes pasos:
1.- Habilitar los módulos de caché de Apache.
Copiar código
sudo chown -R www-data:www-data /var/cache/apache2/mod_cache_disk
sudo chmod -R 755 /var/cache/apache2/mod_cache_disk
sudo apt-get install apache2-utils
sudo a2enmod expires
sudo a2enmod cache
sudo a2enmod cache_disk
sudo a2enmod headers
sudo systemctl restart apache2
2.- Configurar el caché en el disco:
Debemos movernos a la ruta donde están los archivos de configuración:
Copiar código
cd /etc/apache2/sites-available/
3.- Modificar el archivo de configuración del sitio, por ejemplo:
Copiar código
sudo nano ejemplo.com.conf
4.- Una vez en el modo de edición, veremos probablemente la configuración básica como esta:
Listen 8084
<VirtualHost *:8084>
ServerAdmin tu-email@email.com
ServerName ejemplo.com
ServerAlias ejemplo.com
DocumentRoot /var/www/ejemplo.com
WSGIDaemonProcess app-ejemplo user=www-data group=www-data threads=6 python-home=/var/www/ejemplo.com/.venv
WSGIScriptAlias / /var/www/ejemplo.com/ejemplo.com.wsgi
# dentro de tu proyecto debe existir la carpeta log para que dentro de esa se almacenen los logs
ErrorLog /var/www/ejemplo.com/log/error.log
CustomLog /var/www/ejemplo.com/log/access.log combined
<Directory /var/www/ejemplo.com>
WSGIProcessGroup app-ejemplo
WSGIApplicationGroup %{GLOBAL}
#Order deny,allow
Require all granted
</Directory>
</VirtualHost>
Dentro de la configuración, de preferencia después del cierre del tag </Directory>, agregaremos la siguiente información:
Copiar código
# Habilitar caché para todas las solicitudes
CacheEnable disk /
# Configuración de caché
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2
CacheDirLength 1
# [bytes] Tamaño máximo de archivo a almacenar en caché
CacheMaxFileSize 1000000
# CacheMinFileSize bytes
CacheMinFileSize 1
CacheIgnoreHeaders Set-Cookie
CacheIgnoreNoLastMod On
<FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
# Indica si el caché está funcionando
Header set X-Cache "HIT from Apache"
# Expiración por defecto (1 hora)
CacheDefaultExpire 3600
# Expiración máxima (1 día)
CacheMaxExpire 86400
CacheLastModifiedFactor 0.5
</FilesMatch>
</IfModule>
5.- El nuevo archivo de configuración debería de verse como el siguiente:
Copiar código
Listen 8084
<VirtualHost *:8084>
ServerAdmin tu-email@email.com
ServerName ejemplo.com
ServerAlias ejemplo.com
DocumentRoot /var/www/ejemplo.com
WSGIDaemonProcess app-ejemplo user=www-data group=www-data threads=6 python-home=/var/www/ejemplo.com/.venv
WSGIScriptAlias / /var/www/ejemplo.com/ejemplo.com.wsgi
# dentro de tu proyecto debe existir la carpeta log para que dentro de esa se almacenen los logs
ErrorLog /var/www/ejemplo.com/log/error.log
CustomLog /var/www/ejemplo.com/log/access.log combined
<Directory /var/www/ejemplo.com>
WSGIProcessGroup app-ejemplo
WSGIApplicationGroup %{GLOBAL}
#Order deny,allow
Require all granted
</Directory>
# INICIO MANEJO CACHE APACHE
# Habilitar caché para todas las solicitudes
CacheEnable disk /
# Configuración de caché
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2
CacheDirLength 1
# [bytes] Tamaño máximo de archivo a almacenar en caché
CacheMaxFileSize 1000000
# CacheMinFileSize bytes
CacheMinFileSize 1
CacheIgnoreHeaders Set-Cookie
CacheIgnoreNoLastMod On
# archivos en especifico:
<FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
# Indica si el caché está funcionando
Header set X-Cache "HIT from Apache"
# Expiración por defecto (1 hora)
CacheDefaultExpire 3600
# Expiración máxima (1 día)
CacheMaxExpire 86400
CacheLastModifiedFactor 0.5
</FilesMatch>
</IfModule>
# FINAL MANEJO CACHE APACHE
</VirtualHost>
6.- Para aplicar los cambios realizados en el archivo de configuración, debemos recargar Apache:
Copiar código
sudo systemctl reload apache2