首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出缓存不适用于AJAX varyByParam

输出缓存不适用于AJAX varyByParam
EN

Stack Overflow用户
提问于 2013-10-02 07:12:43
回答 1查看 833关注 0票数 3

我有一个web服务的端点,它不会在AJAX请求的性能监视器中获得输出缓存命中,它确实会为 AJAX请求获得一个输出缓存。

网络配置:

代码语言:javascript
复制
<caching>
  <outputCacheSettings >
    <outputCacheProfiles>
      <add location="Any" name="myCache" duration="3600" varyByParam="*" />
     </outputCacheProfiles>
  </outputCacheSettings>
</caching>

我在配置中遗漏了一个选项吗?我没有包含Javascript,因为我怀疑问题在哪里,因为服务器不应该检查任何头来确定缓存的适配性。

端点:

代码语言:javascript
复制
[AspNetCacheProfileAttribute("myCache")]
        [WebGet(ResponseFormat= WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "suburb?name={name}&state={state}&category={category}&bedrooms={bedrooms}&country={country}")]
EN

回答 1

Stack Overflow用户

发布于 2014-03-26 13:31:37

当您进行ajax调用时,有可能将其作为缓存: false传递。

当您这样调用时,ajax调用将传递带有额外参数的URL,并且值将是一个随机唯一的数字。由于varyByParam="*"方法接收这个额外的参数并配置输出缓存,因此该方法将永远不会缓存。解决办法是:

  1. 在ajax调用中设置缓存:真正的(在调用动态方法时不太好)或
  2. 设置outputcache varyByParam="none" (仅在方法需要缓存时使用,而不考虑参数)或
  3. 设置outputcache varyByParam="parameter1;parameter2" (如果有多个参数,这是理想的解决方案)。对于单个参数,使用varyByParam="parameter1"

抱歉,回复晚了。我刚才看到了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19131700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档