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

Аудит Chromium говорит, что статический контент не кэшируется, но заголовки заданы - кто виноват?

Я размещаю Redmine с nginx + thin со статическим кешированием контента

Вопрос: это кешируется браузером или не кешируется?

Конфигурация кеширования nginx:

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    # Some basic cache-control for static files to be sent to the browser
    expires max;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

вот заголовки ответов:

Request URL:http://redmine/javascripts/prototype.js?1251746896
Request Method:GET
Status Code:304 Not Modified

Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie: <hiden>
Host:redmine
If-Modified-Since:Mon, 31 Aug 2009 19:28:16 GMT
Referer:http://redmine/issues/
User-Agent: <someuseragent>
Query String Parameters
1251746896:

Response Headers
Cache-Control:max-age=315360000, public, must-revalidate, proxy-revalidate
Connection:keep-alive
Date:Fri, 09 Dec 2011 01:15:12 GMT
Expires:Thu, 31 Dec 2037 23:55:55 GMT
Last-Modified:Mon, 31 Aug 2009 19:28:16 GMT
Pragma:public
Server:nginx/0.7.67

И все же хромовой аудит все же говорит:

The following resources are explicitly non-cacheable. Consider making them cacheable if possible:

Не must-revalidate хотя бы сделать запрос браузера, чтобы увидеть, изменился ли ресурс, даже если ему не нужно повторно загружать контент? Он будет принимать ответ «не изменен», но все равно должен запросить сервер, чтобы получить его, вместо того, чтобы напрямую использовать локально кэшированную копию.

Chromium может сообщать, что это означает, что контент не полностью кэшируется - попробуйте удалить директивы, связанные с revalidate, и посмотрите, какая разница.