根据 Nginx 中图片或 html 的 php 响应更改缓存值

根据 Nginx 中图片或 html 的 php 响应更改缓存值

我有一个设置,其中 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 脚本返回的,有没有办法做到这一点?

谢谢,马特

相关内容