【问题标题】:Caching GET .NET Webservice Call in Client - Headers not being updated在客户端缓存 GET .NET Web 服务调用 - 标头未更新
【发布时间】:2015-09-18 09:03:45
【问题描述】:

我正在尝试在 ASP.NET 4.5/C# 中缓存参数化的 GET webservice 调用。我已经尝试了在 StackOverflow 中阅读的所有选项,包括设置 HttpCachePolicy、使用 CacheDuration 属性,但我总是得到Cache-Control :no-cacheExpired: -1Pragma: no-cache,并且对 web 服务的调用返回 200 而不是 304(未修改)。

内容已正确缓存在服务器上,但我希望缓存标头也能更新,这样它甚至不会在我在缓存中指定的给定时间内调用服务器。

我也尝试过这种方法,但没有奏效:

  HttpCachePolicy cache = HttpContext.Current.Response.Cache;
        cache.VaryByParams["*"] = true;
        cache.SetCacheability(HttpCacheability.Private);
        cache.SetExpires(DateTime.Now.AddSeconds((double)900));

        FieldInfo maxAgeField = cache.GetType().GetField(
            "_maxAge", BindingFlags.Instance | BindingFlags.NonPublic);
        maxAgeField.SetValue(cache, new TimeSpan(0, 0, 900));

也试过了:

 private void SetCachingPolicy()
    {
        HttpCachePolicy cache = HttpContext.Current.Response.Cache;
        cache.VaryByParams["*"] = true;
        cache.SetCacheability(HttpCacheability.Private);
        cache.SetExpires(DateTime.Now.AddSeconds((double)900));

        FieldInfo maxAgeField = cache.GetType().GetField(
            "_maxAge", BindingFlags.Instance | BindingFlags.NonPublic);
        maxAgeField.SetValue(cache, new TimeSpan(0, 0, 900));
    }

缓存代码应用在 Web 服务调用 Web 方法中。

我希望 Web 服务调用(我从 jQuery/Ajax 调用)在客户端中缓存几秒钟或几分钟。

我正在我的 Windows 7 计算机上的本地 IIS 7.5 服务器上测试它,使用 Visual Studio 作为开发平台。我也在使用 Chrome 网络流量来测试响应头。

【问题讨论】:

  • 您是否检查过您没有在本地 IIS 中设置标头?
  • @ste-fu,我用的是 IIS Express 10
  • 尝试将其设置为使用本地 IIS 并在其中设置缓存标头?
  • @nope,不工作:(
  • 看看这个 SO 答案。它讨论了同样的问题:stackoverflow.com/questions/17287144/…

标签: c# asp.net web-services caching


【解决方案1】:

您能否将您的response Header 更新为CachePolicy,这可能是提醒客户端(浏览器)将其缓存一段时间的简单解决方案。

response.Headers.CacheControl = new CacheControlHeaderValue()
{
      Public = false,
      MaxAge = new TimeSpan(0, 0, 900)
};  

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 2014-09-04
    • 2011-04-25
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多