我有一个设置,其中 PHP 脚本根据大小和请求图像的设备动态创建图像。
除了从 PHP 加载图像时设置更高的缓存过期时间外,一切工作正常。
我有一个位置块,如下所示,它检查静态文件,如果不存在,则将其传递给 PHP 位置块(也如下所示)。
# pass the PHP scripts to FastCGI server
#
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
expires 30m;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Dynamic Images
location ~* \.(?:gif|jpg|jpeg|png|webp)$ {
try_files $uri /index.php;
expires 1M;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
理想情况下,我希望所有内容(包括 HTML)的默认缓存控制标头为 30m,图像的默认缓存控制标头为 1M。考虑到图像文件是基于 PHP 脚本返回的,有没有办法做到这一点?
谢谢,马特