2012-06-19 2 views
3

Я использую OutputCache для всех моих v4 страниц Umbraco, но хотели бы избежать такого кэша для любого вызова Ajax ...ASP.NET OutputCache, VaryByParam, varyByHeader и AJAX

Я добавил эту строку в умолчанию. ASPX:

<%@OutputCache CacheProfile="umbProfil" %> 

Затем в web.config:

<caching> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <add name="umbProfil" duration="120" enabled="true" varyByHeader="???" 
      varyByParam="umbPage" location="ServerAndClient" /> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

Проблема теперь, что все в кэше, в том числе мой Ajax звонки, которые не должны быть на самом деле: Они в основном формы и там данные поля поддерживаются w Ith начальных значений до кэша истекают ...

Для того, чтобы вы знаете, эти Ajax являются т.е. Umbraco регулярных страниц «частичного вида на», которые делают только некоторые формы ...

Как следует установить параметр varyByHeader поэтому я фактически кэширую все, что связано с ombPage ИСКЛЮЧЕНИЕ Ajax GET/POST?

+0

Или еще одним приемлемым решением может быть не кэширование POST-вызовов (Ajax или нет), поскольку все они являются темной стороной моей системы кеширования ... – user1288337

ответ

0

Поскольку я использую скрытое текстовое поле с противоотражающими свойствами в каждой форме, я, наконец, использовал этот параметр формы в качестве параметра param.

<add name="umbProfil" duration="120" enabled="true" 
       varyByParam="umbPage;__RequestVerificationToken" location="ServerAndClient" /> 

Это, кажется, работает хорошо, Мой umbPage кэшируются и моя форма POST нет (или, по крайней мере, всего лишь один экземпляр кэша выполняется для каждой процедуры POST и в течение 120 секунд) являются.

Если у вас, ребята, есть идея лучше (никакого кеша вообще нет для POST), пожалуйста, совет.

Смежные вопросы