Назад | Перейти на главную страницу

Изменение значения кеша на основе ответа php изображения или html в Nginx

У меня есть настройка, в которой сценарий 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";
}

В идеале я бы хотел, чтобы заголовок управления кешем по умолчанию 30 м для всего контента, включая HTML, а затем имел 1 м для изображений. Есть ли способ сделать это, учитывая, что файлы изображений возвращаются на основе сценария PHP?

Спасибо, Мэтт