Я задаюсь вопросом, почему Cloulflare не кэшировал бы определенный статический js файл.
Учитывая reuqest:
curl -I http://www.testlifeinuk.com/dist/lifeinuk.js
заголовки, возвращенные как:
HTTP/1.1 200 OK
Date: Mon, 12 Jan 2015 10:59:21 GMT
Content-Type: application/javascript
Connection: keep-alive
Set-Cookie: __cfduid=d11a9f01292153436a211a9d807a3399b1421060361; expires=Tue, 12-Jan-16 10:59:21 GMT; path=/; domain=.testlifeinuk.com; HttpOnly
X-Powered-By: Express
Etag: W/"507660-1420797981000"
Cache-Control: public, max-age=1382400
Last-Modified: Fri, 09 Jan 2015 10:06:21 GMT
Vary: Accept-Encoding
Via: 1.1 vegur
CF-Cache-Status: MISS
Expires: Wed, 28 Jan 2015 10:59:21 GMT
Server: cloudflare-nginx
CF-RAY: 1a78d818b4af0b81-LHR
То, что озадачивает меня, - то, что, неважно, сколько раз я делаю запрос, он всегда возвращается
CF-Cache-Status: MISS
Какая-либо идея, почему?
Вы должны установить страничное правило в панели администрирования CloudFlare. Первым шагом к использованию Page Rules является определение шаблона, который определяет, когда правило срабатывает. Эти шаблоны могут быть простыми, например, один URL, или сложными, включая несколько подстановочных знаков. Представьте, что у вас есть система управления контентом с одним URL:
http://www.testlifeinuk.com
Теперь, если вы попытаетесь создать правило с URL Pattern:
http://www.testlifeinuk.com
Только домашняя страница будет кэшироваться!
Если вы хотите кэшировать весь сайт, вы должны использовать Wildcard таким образом:
*testlifeinuk.com/*
Таким образом, все страницы и ресурсы будут кэшироваться Cloudflare следующим образом:
http://www.testlifeinuk.com/dist/lifeinuk.js
http://www.testlifeinuk.com/mypage.html
https://www.testlifeinuk.com/mypage.html
https://testlifeinuk.com/mypage.html
и результатом заголовка будет:
HTTP/1.1 200 OK
Date: Mon, 25 May 2015 10:21:05 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.39-0+deb7u2
Expires: Mon, 25 May 2015 10:51:05 GMT
Cache-Control: public, max-age=1800
Pragma: no-cache
Vary: Accept-Encoding
CF-Cache-Status: HIT <<<<< Look this parameter
Server: cloudflare-nginx
CF-RAY: 1ec082ee43150e60-MXP
Content-Encoding: gzip
regard
.Помимо того, что упомянул @Michelangelo, вам необходимо сначала настроить правила страницы CloudFlare, вам также необходимо убедиться, что вы правильно задали заголовки ответов, чтобы вы не переопределяли поведение кеширования по умолчанию:
Если Cache Заголовок -Control имеет значение «private», «no-store», «no-cache» или «max-age = 0», или, если в ответе есть cookie, CloudFlare не будет кэшировать ресурс. В противном случае, если Cache-Заголовок управления установлен на «общедоступный», а «максимальный возраст» больше 0, или, если заголовки Expires будут установлены в любое время в будущем, мы кэшируем ресурс.
См .: https: / /support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-Cloudflare-What-to-Cache-
И поэтому @Rudy Lee сказал, что не забудьте установить maxAge
, потому что по умолчанию maxAge
в Express равен 0.
Другая возможность состоит в том, что что-то определенное в вашем .htaccess может конфликтовать с кэшированием Cloudflare. Если там установлены заголовки expires, они переопределят настройки кеширования Cloudflare. Я обнаружил, что это относится к моему собственному веб-сайту, и я даже не осознавал сначала, пока не провел несколько тестов с https://cf-cache-status.net