Eu habilitei os módulos mod_cache e mod_disk_cache do Apache, para permitir o armazenamento em cache de imagens geradas dinamicamente de um script PHP (baseado em parâmetros de largura e altura).
Tudo funciona bem (o Apache armazena os arquivos em cache) sempre que eu forneço pequenos parâmetros de largura e altura para o meu script PHP. No entanto, quando eu forneço parâmetros maiores, e como o tamanho da imagem fica maior (acima de cerca de 50k), o Apache não está mais armazenando a resposta em cache. Nesse caso, o Apache cria um diretório no / var / cache / apache / mod_disk_cache, mas o diretório está vazio (ele não contém os arquivos .header e .data).
Eu tentei definir a diretiva CacheMaxFileSize, mas parece que não funcionou (tentei defini-la como um valor grande (2000000) no arquivo disk_cache.conf, mas ela não pareceu ter nenhum efeito e definir a diretiva no arquivo disk_cache.conf O arquivo de configuração do site desabilitou todo o armazenamento em cache - o armazenamento em cache de arquivos pequenos parou de funcionar).
Alguém encontrou algo semelhante e sabe como resolvê-lo?
O servidor está executando o Ubuntu 12.04 com o Apache 2.2.22
Aqui está minha configuração:
/etc/apache2/mods-available/disk_cache.conf
<IfModule mod_disk_cache.c>
# cache cleaning is done by htcacheclean, which can be configured in
# /etc/default/apache2
#
# For further information, see the comments in that file,
# /usr/share/doc/apache2.2-common/README.Debian, and the htcacheclean(8)
# man page.
# This path must be the same as the one in /etc/default/apache2
CacheRoot /var/cache/apache2/mod_disk_cache
# This will also cache local documents. It usually makes more sense to
# put this into the configuration for just one virtual host.
CacheDirLevels 2
CacheDirLength 1
CacheIgnoreCacheControl On
CacheIgnoreURLSessionIdentifiers jsessionid
CacheIgnoreURLSessionIdentifiers PHPSESSID
CacheIgnoreHeaders Set-Cookie
CacheMaxFileSize 2000000
</IfModule>
/etc/apache2/sites-available/img.mydomain.com
<VirtualHost *:80>
ServerName img.mydomain.com
ServerAlias img.mydomain.eu
DocumentRoot /var/www/mydomain.com/img/
<Directory />
Options None
AllowOverride None
Order allow,deny
Deny from all
</Directory>
<Directory /var/www/mydomain.com/>
AllowOverride All
</Directory>
<Directory /var/www/mydomain.com/img/>
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
<IfModule mod_disk_cache.c>
CacheEnable disk /cached/
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/img.mydomain.com-error.log
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/img.mydomain.com-access.log combined
</VirtualHost>
Script de geração de imagem PHP /var/www/mydomain.com/img/cached/logo.php
<?php
//Generate Imagick image based on provided width and height
header("Content-Type: image/" . strtolower($image->getImageFormat()));
header("Content-Length: " . strlen($image));
header("Cache-Control: public, must-revalidate, max-age=2592000");
echo $image;
?>