Akamai Cache не обновляется с новой датой истечения срока действия
Наш сайт использует akamai-CDN для обслуживания изображений, наш origin-сервер - nginx. В nginx мы изначально установили срок действия как измененную дату + 45 дней.
location ~* \. (jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js|ttf) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires modified +45d;
}
Но через 45 дней в браузере мы увидели что-то вроде этого:
Cache-Control: общедоступный, без кэширования, обязательный повторный валидация.
В основном данные не кэшируются на стороне браузера, и для каждого запроса akamai отправляет запрос на наш сервер.
X-Cache:TCP_IMS_HIT from a203-92-39-77.deploy.akamaitechnologies.com (AkamaiGHost/7.1.0.2-14656242) (-)
Итак, мы изменили конфу nginx на expires 45 d:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js|ttf) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires 45d;
}
Это должно повлиять на то, что кеш akamai и кеш браузера обновляются с 45 d, и, следовательно, akamai не должен снова вызывать наш сервер, но я все еще вижу, что данные не кэшируются, и статус akamai по-прежнему выглядит так:
X-Cache:TCP_IMS_HIT
Единственное, о чем я могу думать сейчас, это то, что, поскольку мы не настроили сервер, то, поскольку мы не настроили сервер специально, когда akamai вызывает внутренний сервер, он будет отправлять статус, а файл не изменился, и, следовательно, я должен отправить статус как 200 вместе с изображением. Правильно ли мое понимание? и есть ли способ только обновить данные об истечении срока действия без отправки полных данных.
Спасибо нитеш
2 ответа
Вы должны проверить конфигурацию akamai, а не источник, на котором установлен TTL. Если его 45 дней, то, безусловно, вы должны увидеть любой запрос на исходных серверах. Если это только между akamai и браузером, то посмотрите правила кэширования в нисходящем направлении в конфигурации akamai.
Тестируете ли вы, нажимая кнопку "Обновить" в браузере? Когда вы нажимаете кнопку обновления браузера, проверьте заголовки "Запрос". Он покажет, что браузер отправляет If-Modified-Since, а также Cache-control: 0 для принудительной перезагрузки объектов.
Если вы делаете вышеупомянутое, то правильным способом проверки будет нажатие клавиши ввода в адресной строке браузера, в этом случае браузер не будет отправлять заголовок запроса IMS.