Как установить Cache-Control заголовка ответа в Sitecore?

По умолчанию кажется, что Sitecore не кэширует страницы. В web.config установите это

<setting name="DisableBrowserCaching" value="false"/>

и создайте конвейерный процессор

page.Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
page.Response.Cache.SetCacheability(HttpCacheability.Public); 

но это не сработало, голова ответа остается no-cache. Кстати, добавляю пайплайн в renderLayout, кто-нибудь знает? Спасибо!


person user822211    schedule 16.04.2012    source источник
comment
Какую версию Sitecore вы используете?   -  person Mark Ursino    schedule 16.04.2012


Ответы (2)


Я попытался воспроизвести это, сначала установив для параметра DisableBrowserCaching значение true. Это действительно создаст заголовок без кеша.

Затем я установил его на false и перезагрузил страницу, и заголовок без кеша исчез. Ни в чем другом не было нужды.

Если вы хотите установить заголовки срока действия, вы должны сделать это в IIS, в функции заголовков ответа HTTP.

person Ruud van Falier    schedule 16.04.2012
comment
Спасибо! Я понял. В layout.aspx было ‹%@ OutputCache Location=None VaryByParam=none %›. Вот почему API не работал. Надо убрать сначала! - person user822211; 17.04.2012

Sitecore имеет 7 уровней кэширования, прежде чем контент будет отображаться в виде HTML. Вы можете управлять кэшированием каждый раз, прежде чем содержимое будет отображаться. Но это правда, что no-cache по умолчанию верно.

Это связано с тем, что страницы в Sitecore являются динамическими. Они меняют расположение и содержание в зависимости от текущей ситуации. Особенно если вы используете устройства ( http://briancaos.wordpress.com/2012/04/12/identifying-mobile-devices-in-sitecore/ ) и при использовании Sitecore DMS контент отображается по-разному для каждого устройства и пользователя.

Если вы создаете свои собственные механизмы кэширования в браузере, убедитесь, что вы делаете это только на страницах со статическим содержимым.

person Brian Pedersen    schedule 17.04.2012