Изображения, игнорирующие Cache-Control в .htaccess - PullRequest
0 голосов
/ 14 декабря 2018

В моей папке с изображениями у меня есть файл .htaccess со следующим:

<IfModule mod_headers.c>

  # Browsers may cache images for 24 hours, including disk cache for SSL
  Header set Cache-Control "max-age=2628000, public, must-revalidate"

</IfModule>

Когда я скручиваю изображение в этой папке, я получаю следующее (обратите внимание, что в Cache-Control отсутствует «public» и"must-revalidate"):

HTTP/1.1 200 OK
Server: nginx/1.11.8
Date: Fri, 14 Dec 2018 17:57:00 GMT
Content-Type: image/jpeg
Content-Length: 46563
Last-Modified: Fri, 29 Sep 2017 03:16:20 GMT
Connection: keep-alive
ETag: "59cdbb04-b5e3"
Expires: Fri, 21 Dec 2018 17:57:00 GMT
Cache-Control: max-age=604800
Strict-Transport-Security: max-age=31536000
Accept-Ranges: bytes

Не имеет значения, что я положил в файл .htaccess, я всегда получаю ответ выше.

Если я создаю новый образ в этомПапка, я также получаю тот же ответ выше.

Если я изменяю расширение изображения в этой папке (.bak), я получаю ожидаемый ответ (Cache-Control правильный):

HTTP/1.1 200 OK
Server: nginx/1.11.8
Date: Fri, 14 Dec 2018 17:59:35 GMT
Content-Type: image/gif
Content-Length: 19164
Connection: keep-alive
Last-Modified: Fri, 14 Dec 2018 16:07:12 GMT
ETag: "183ca-4adc-57cfd9fbbac00"
Accept-Ranges: bytes
Cache-Control: max-age=2628000, public, must-revalidate
Strict-Transport-Security: max-age=31536000

Есть идеи, что здесь происходит?Я просмотрел все родительские файлы .htaccess и apache config, ничего не могу найти!

Пожалуйста, помогите !!!

1 Ответ

0 голосов
/ 19 декабря 2018

Для всех, кто столкнулся с этой проблемой, директива Apache .htaccess была переопределена следующей конфигурацией Nginx:

location ~* ^(.+?)(?:\.\d+)?\.(jpe?g|gif|png|svg|ico|bmp|js|css|ttf|eot|woff2?)$ {
    root /var/www;
    try_files $1.$2 @apache;
    expires 7d;
}

Замена «expires 7d;»со следующим сделал трюк:

 add_header Cache-Control "max-age=2628000, public, must-revalidate";
...