2017-02-20 7 views
0

Вот curl -I ответ на мой файл Javascript:Cloudfront - почему это не «кешируется браузером»?

HTTP/1.1 200 OK 
    Content-Type: text/javascript 
    Content-Length: 72640 
    Connection: keep-alive 
    Date: Sat, 18 Feb 2017 16:12:06 GMT 
    Cache-Control: 86400 
    Last-Modified: Wed, 15 Feb 2017 15:09:28 GMT 
    ETag: "a6ee06ff5e49a4290bb2aabe5e0f9029" 
    Server: AmazonS3 
    Vary: Accept-Encoding 
    Age: 1173 
    X-Cache: Hit from cloudfront 
    Via: 1.1 3b17302562f1709d8b6c9f7be1.cloudfront.net (CloudFront) 

Я могу видеть Cache-Control тег там. Не уверен, что делают Vary и ETag, но пусть будет так. Означает ли это каким-либо образом указать браузеру пользователя, чтобы не кэшировать этот файл? Почему Pingdom или Goog PageSpeed ​​не распознают это как файл, поддерживающий браузер?

ответ

1

Ваш заголовок Cache-Control присутствует, но значение на самом деле не является действительным. Правильный формат выглядит так:

Cache-Control: max-age=86400 

Число само по себе не имеет смысла.


ETag: является метка объекта - непрозрачное значение, которое однозначно идентифицирует текущее содержимое данного URL. Если содержимое изменится, ETag также изменится. Браузер с кешированной копией может использовать это значение для последующих запросов, чтобы запросить, чтобы сервер возвращал контент только в том случае, если он отличается, отправив заголовок запроса If-None-Match:, включая последний увиденный ETag.

Vary: сообщает браузеру, что некоторые изменения в запросе могут генерировать другой ответ. В отличие от браузеров, curl не рекламирует свою способность поддерживать полезную нагрузку gzipped, если вы не укажете опцию --compressed. Добавление этой опции при вызове curl запускает добавление Accept-Encoding: gzip к запросу, которое может запускать ответ для сжатия, если этот параметр включен в CloudFront.

+0

Именно так. Мое время Рэя Чарльза. Спасибо! – PKHunter

+1

Также +1 для очень ясного объяснения Etag и Vary. – PKHunter