ASP.NET outputCache,varyByParam,varyByHeader和AJAX

时间:2012-06-19 23:23:08

标签: asp.net ajax outputcache

我正在为所有的Umbraco v4页面使用outputcache,但是想要避免任何Ajax调用的缓存......

我在default.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调用,实际上不应该是:它们主要是表单,并且使用初始值维护字段条目,直到缓存过期...

为了让您知道,这些Ajax是'部分视图',即Umbraco常规页面只呈现某些形式......

我应该如何设置varyByHeader参数,以便实际缓存与umbPage EXCEPTING Ajax GET / POST调用相关的所有内容?

1 个答案:

答案 0 :(得分:0)

当我在每个表单上使用防伪隐藏文本字段时,我最终使用此表单参数作为变量参数。

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

它似乎运行良好,我的umbPage被缓存,我的表单POST不是(或者至少只有一个缓存实例是针对每个POST进行的,持续120秒)。

如果你们有更好的想法(任何POST都没有缓存),请提供建议。