2015-12-06 3 views
0

Мы создаем сайт с балансировкой нагрузки на Umbraco CMS с ARR 2.5 на балансировочном шлюзе. Мы пытаемся использовать кеш-память ARR для хранения некоторых «тяжелых» страниц на шлюзе, что делает его работой как обратный прокси.Кэш ARR не кэширует одну конкретную страницу, созданную Umbraco CMS

Проблема в том, что некоторые страницы не хранятся в кеше ARR, даже если они покрыты правилами управления кэшем ARR с условием Cache Always. Например, у нас есть правило всегда кэшировать все страницы внутри папки «about» -.

Похоже, это:

Состояние: Всегда

Время: 60 минут Имя

Ведущий:

URL: о/*

В результате, я вижу , что некоторые страницы кэшируются, но нет. Я не вижу его на диске в папке с кешем, и «netsh http show CacheState» также не показывает его. Я открываю страницу в браузере и вижу, что для ее загрузки требуется больше времени по сравнению с другими в папке «about». Единственная разница между кешированными и не кэшируемыми страницами - это заголовки HTTP-ответа, возвращенные на шлюз целевыми серверными серверами.

Для кэшированных страниц они выглядят так.

HTTP/1.1 200 OK 
Cache-Control: max-age=3600 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Server: Microsoft-IIS/8.5 
X-MiniProfiler-Ids: ["c101eed1-0a28-42ae-8428-5ac86c87dc10","969bfc9d-073c-419b-8141-447fd8a0d56c"] 
X-Powered-By: ARR/2.5 
Date: Sat, 05 Dec 2015 19:15:01 GMT 
Connection: close 
Content-Length: 34246 

Для страницы, которая не кэшируется, они выглядят так.

HTTP/1.1 200 OK 
Cache-Control: max-age=3600 
Content-Length: 255916 
Content-Type: text/html; charset=utf-8 
Expires: Sat, 05 Dec 2015 20:11:21 GMT 
Last-Modified: Sat, 05 Dec 2015 19:11:21 GMT 
Vary: * 
Server: Microsoft-IIS/8.5 
X-MiniProfiler-Ids: ["4901b30d-6738-4918-b04b-c7aac2dbc043","480638b0-11cd-481d-8fdc-2dd1689c0b8b","342f085b-61dc-45b4-8c76-4da634bacf63"] 
X-Powered-By: ARR/2.5 
Date: Sat, 05 Dec 2015 19:11:35 GMT 
Connection: close 

Единственное отличие состоит в «Варах», «Expires» и «Last-Modified» HTTP заголовки, где последний имеет точно время, когда целевой сервер бэкенд (т.е. за шлюзом) ответил. Время возвращается для каждого ответа HTTP со страницей.

HTTP-заголовки создаются Umbraco CMS/IIS, и мы не настраивали их для отправки таких заголовков. Собственно, содержимое страницы не изменяется, но кеш ARR не кэширует страницу даже с условием Cache Always. Правило управления кешем ARR поражено точно - мы видим это, потому что другие страницы из «about» -папки кэшируются.

Я уже просмотрел множество сайтов, пытаясь найти что-то о том, как ARR решает, какие страницы кэшировать, а какие нет, но нет ничего, чтобы прояснить мою проблему.

Пожалуйста, помогите найти решение моей проблемы.

ответ

0

Мне удалось избавиться от HTTP-заголовка «Vary» на целевом бэкэнд-сервере, и страница начала кэшироваться.