Cloudflare не кешируется, как ожидалось

Мне интересно, почему Cloulflare не кэширует определенный статический файл js.

Учитывая запрос:

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

Есть идеи почему?

4 ответа

Вы должны установить правило страницы в админ-панели CloudFlare. Первый шаг к использованию правил страницы - определить шаблон, который определяет, когда правило запускается. Эти шаблоны могут быть простыми, например, один URL, или сложными, включая несколько подстановочных знаков. Представьте, что у вас есть система управления контентом с одним URL:

http://www.testlifeinuk.com

Теперь, если вы попытаетесь создать правило с URL Pattern:

http://www.testlifeinuk.com

Только домашняя страница будет кешироваться!

Если вы хотите кэшировать весь сайт, вы должны использовать подстановочный знак следующим образом:

 *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

С уважением

Помимо того, что @Michelangelo упомянул о том, что вам нужно сначала настроить правила страницы CloudFlare, вам также нужно убедиться, что вы правильно установили заголовки ответов, чтобы не переопределять поведение кэширования по умолчанию:

Если заголовок Cache-Control имеет значение "private", "no-store", "no-cache" или "max-age=0", или если в ответе есть cookie, то CloudFlare не будет кэшировать ресурс. В противном случае, если для заголовка Cache-Control установлено значение "public" и "max-age" больше 0, или если заголовки Expires установлены в любое время в будущем, мы будем кэшировать ресурс.

См.: https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-Cloudflare-What-to-Cache-

И именно поэтому @Rudy Lee сказал, не забудьте установить maxAge вариант, потому что по умолчанию maxAge 0 в экспрессе.

Смотрите: https://expressjs.com/en/api.html

Другая возможность состоит в том, что что-то определенное в вашем.htaccess может конфликтовать с кэшированием Cloudflare. Если заголовки expires установлены, они будут переопределять настройки кэширования Cloudflare. Я обнаружил, что это имеет место с моим собственным сайтом, и я даже не осознавал изначально, пока я не сделал кучу тестирования с https://cf-cache-status.net/

В документации Cloudflare также отсутствует вот эта изюминка:

Если ваш исходный сервер не устанавливает ни одного изCache-ControlилиExpiresзаголовки вообще (т.е. оба этих заголовка отсутствуют), то, очевидно, Cloudflare по умолчанию будет использоватьMISSнезависимо от настроек срока действия статических файлов на вкладке их кэша...

В таком случае вам необходимо использовать правила страницы , чтобы установить TTL Edge Cache для этих ресурсов, а для удаления файлов cookie вы также можете установить Cache Everything внутри того же правила.

Я использую Cloudflare и играюсь с конфигурациями стека LEMP в течение многих лет, но заметил, что это происходит только недавно... Я могу ошибаться, но я думаю, возможно, они изменили это поведение за последние 1-2 года, примерно так же. возможно, когда они подправили некоторые функции вкладки кэша.

Другие вопросы по тегам