Кто-то знает, как Reddit удается обойти статическое кеширование HTML Cloudflare после того, как пользователь успешно входит в систему с перезагрузкой страницы?
Я вижу, что текущая страница перезагружается после успешного входа в систему.
Заголовки ответа перед входом в систему:
CF-Cache-Status: HIT
CF-RAY: 23b76b8270950e30-MXP
Cache-Control: max-age=0, must-revalidate
Content-Encoding: gzip
Content-Length: 20794
Content-Type: text/html; charset=UTF-8
Date: Mon, 26 Oct 2015 16:08:27 GMT
Server: cloudflare-nginx
Vary: Accept-Encoding
X-Firefox-Spdy: 3.1
X-Frame-Options: SAMEORIGIN
strict-transport-security: max-age=15552000; includeSubDomains; preload
x-content-type-options: nosniff
x-moose: majestic
x-ua-compatible: IE=edge
x-xss-protection: 1; mode=block
Заголовки ответа после входа в систему:
CF-RAY: 23b76cb065140e30-MXP
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate, max-age=0, must-revalidate
Content-Encoding: gzip
Content-Length: 18697
Content-Type: text/html; charset=UTF-8
Date: Mon, 26 Oct 2015 16:09:16 GMT
Expires: -1
Server: cloudflare-nginx
Vary: accept-encoding
X-Firefox-Spdy: 3.1
X-Frame-Options: SAMEORIGIN
strict-transport-security: max-age=15552000; includeSubDomains; preload
x-content-type-options: nosniff
x-moose: majestic
x-ua-compatible: IE=edge
x-xss-protection: 1; mode=block
Спасибо за любые подсказки.
В CloudFlare есть два основных способа сделать это:
Справочный центр CloudFlare объясняет как управлять кешем через заголовки, отправленные из источника:
Второй способ изменить то, что CloudFlare будет кэшировать, - это кэширование заголовков, отправленных из источника. CloudFlare будет учитывать эти настройки (но только для файлов с расширениями, которые мы кэшируем по умолчанию), если только правило страницы не настроено для кеширования всего и не задано время истечения срока действия пограничного кеша. Вот заголовки кеширования, которые мы рассматриваем:
- Если для заголовка Cache-Control задано значение «private», «no-store», «no-cache» или «max-age = 0» или если в ответе есть файл cookie, CloudFlare не будет кэшировать ресурс.
- В противном случае, если заголовок Cache-Control установлен на «public», а «max-age» больше 0, или если заголовки Expires будут установлены в любое время в будущем, мы кэшируем ресурс.
Примечание. Согласно правилам RFC, «Cache-Control: max-age» имеет приоритет над заголовками «Expires». Если мы увидим и то, и другое, и они не согласятся, победит максимальный возраст.
В PHP вы можете реализовать это с помощью функции заголовка следующим образом:
header("Cache-Control: no-cache, must-revalidate");