- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 ASP.NET Core 应用程序中,我有一个返回一些数据的操作方法。我想在客户端缓存这些数据。所以基于documentation here我可以在操作方法上使用 ResponseCache 属性。此属性在响应中添加 Cache-Control
header
Response caching refers to specifying cache-related headers on HTTP responses made by ASP.NET Core MVC actions. These headers specify how you want client and intermediate (proxy) machines to cache responses to certain requests (if at all). This can reduce the number of requests a client or proxy makes to the web server, since future requests for the same action may be served from the client or proxy’s cache.
还有
Response caching does not cache responses on the web server. It differs from output caching, which would cache responses in memory on the server in earlier versions of ASP.NET and ASP.NET MVC.
这就是我的操作方法的样子
public class LookupController : Controller
{
[HttpGet]
[ResponseCache(Duration = 120)]
public IEnumerable<StateProvinceLookupModel> GetStateProvinces()
{
return _domain.GetStateProvinces();
}
}
然后我使用浏览器调用该方法 http://localhost:40004/lookup/getstateprovinces这是请求和响应 header
请注意,响应 header 具有预期的 Cache-Control: public,max-age-120
。但是,如果使用 F5 刷新页面(120 秒之前),则 GetStateProvince 操作方法内的调试器断点始终会命中。这意味着它不会在客户端缓存数据。
我还需要做些什么来启用客户端缓存吗?
更新我尝试过使用 IE、Chrome 和 POSTMAN,但没有成功。每次我在地址栏中输入网址或点击刷新时,客户端(即浏览器或 postman )都会调用操作方法。
最佳答案
实际上,ResponseCache 属性按预期工作。
不同之处在于,如果您浏览网站页面(情况 1)或使用后退和前进按钮(不在刷新页面时),响应就会被缓存。
作为情况 1 的示例,我有以下内容:
正如您将在文章 Response Caching in ASP.Net Core 1.1 中看到的那样,声明如下:
During a browser session, browsing multiple pages within the website or using back and forward button to visit the pages, content will be served from the local browser cache (if not expired).
But when page is refreshed via F5, the request will be go to the server and page content will get refreshed. You can verify it via refreshing contact page using F5.
So when you hit F5, response caching expiration value has no role to play to serve the content. You should see 200 response for contact request.
引用文献:
[1]。 ASP.NET Core Response Caching Sample
[2]。 ResponseCache attribute sample
[3]:How to control web page caching, across all browsers?
关于asp.net-core - ResponseCache 属性不在客户端缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369112/
在 ASP.NET Core 应用程序中,我有一个返回一些数据的操作方法。我想在客户端缓存这些数据。所以基于documentation here我可以在操作方法上使用 ResponseCache 属性
我试图了解 .NET Core 3.1 中的响应缓存。但它没有如我所愿。我在 Chrome devtool 中查看了网络,它显示了带有 cache-control: no-cache, no-stor
我有一个 Controller 操作,它呈现一个部分 View ,该 View 从数据库异步获取一些数据。假设这些是菜单项。 [Route("SomeData")] [Respons
我正在为 android 中的 HttpUrlConnection 实现 ResponseCache。一切似乎都有效。我叫 ResponseCache.setDefault(new ResCache(
我在默认缓存 Location = ResponseCacheLocation.Any 的操作方法上有一个 [ResponseCache] 属性。但在少数情况下,我只想将此属性覆盖为 Response
这是我的 View 组件: public class Categories: ViewComponent { private readonly ICategoryService _catego
我想在 asp.net core 2.0 中使用服务器端响应缓存(输出缓存),并发现了 Response Caching Middleware并想尝试一个全新的 asp.core mvc 项目。 这是
我想在客户端浏览器中缓存主页 但是设置ResponseCache属性后,响应头设置为Cache-Control: no-cache, no-store 看完Response cache not wor
我想在客户端浏览器中缓存主页 但是设置ResponseCache属性后,响应头设置为Cache-Control: no-cache, no-store 看完Response cache not wor
我是一名优秀的程序员,十分优秀!