c# – WCF REST JSON服务缓存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – WCF REST JSON服务缓存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1316字,纯文字阅读大概需要2分钟。
内容图文
我有一个返回JSON的WCF Web服务.
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
Stream GetStuff(int arg);
我正在使用此方法将对象图转换为JSON:
private static Stream ToJson(object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(obj);
if (WebOperationContext.Current != null)
{
OutgoingWebResponseContext outgoingResponse = WebOperationContext.Current.OutgoingResponse;
outgoingResponse.ContentType = "application/json; charset=utf-8";
outgoingResponse.Headers.Add(HttpResponseHeader.CacheControl, "max-age=604800"); // one week
outgoingResponse.LastModified = DateTime.Now;
}
return new MemoryStream(Encoding.UTF8.GetBytes(json));
}
我希望将响应缓存在浏览器上,但浏览器仍在生成If-Modified-Since对服务器的调用,这些调用将使用304 Not Modified重播.我希望浏览器缓存并使用响应,而不是每次都对服务器进行If-Modified-Since调用.
我注意到,即使我在代码中指定了Cache-Control“max-age = 604800”,WCF发送的响应头是Cache-Control no-cache,max-age = 604800.为什么WCF添加“无缓存”部分,如何阻止它添加?
解决方法:
尝试将Cache-Control设置为“public,max-age = …”.这可能会阻止WCF应用默认缓存策略标头.
此外,还有所谓的’远期未来过期标题’.对于繁重的长期缓存,我使用Expires头而不是Cache-Control:’max-age = …’并将Cache-Control保留为“public”.
内容总结
以上是互联网集市为您收集整理的c# – WCF REST JSON服务缓存全部内容,希望文章能够帮你解决c# – WCF REST JSON服务缓存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。