在 MVC 中禁用 HTTP 缓存或页面输出缓存的影响
Impact of Disabling either HTTP caching or page output cache in MVC
在ASP.Net MVC 中我们有页面输出缓存。我们通过添加属性来做到这一点
[输出缓存]
然后是浏览器使用的HTTP缓存。我希望到目前为止我是正确的。
使用 HTTP headers 我们可以启用或禁用此 HTTP 缓存。
以上两者有关系吗。如果我禁用其中一个,它会影响其他。
Output caching 告诉 服务器 在服务器内存中保存页面的 渲染结果 (作为字符串)-为下一个请求做好准备。这意味着(例如)填充页面数据所需的任何数据库或文件请求不需要针对进一步的请求发生,同时缓存保持有效 - 以及构建视图和任何组件的(小)开销或部分。 HTTP 缓存告诉 client and/or 下游代理内容将在指定的时间段内保持有效 - 并且它可以从本地或代理缓存提供,而无需重新-要求。
值得注意的是,子操作可以应用 OutputCache - 允许您缓存页面中不会在用户之间更改的部分,同时仍然允许每个用户对所有页面进行自定义。这有时被称为 Donut Hole Caching(其中 "hole" 不会改变,但它周围的其余 "donut" 会改变)。
还有另一个 "donut caching" 的概念,其中大部分页面被一小部分(漏洞)缓存,但在 ASP.NET 中尚不支持开箱即用MVC.
OutputCacheAttribute 确实允许您指定 "location" - 客户端、下游、服务器、服务器和客户端 - 这允许一种方便的方法在一个地方指定客户端和服务器输出缓存,但每个都可以独立控制。
在ASP.Net MVC 中我们有页面输出缓存。我们通过添加属性来做到这一点 [输出缓存]
然后是浏览器使用的HTTP缓存。我希望到目前为止我是正确的。 使用 HTTP headers 我们可以启用或禁用此 HTTP 缓存。
以上两者有关系吗。如果我禁用其中一个,它会影响其他。
Output caching 告诉 服务器 在服务器内存中保存页面的 渲染结果 (作为字符串)-为下一个请求做好准备。这意味着(例如)填充页面数据所需的任何数据库或文件请求不需要针对进一步的请求发生,同时缓存保持有效 - 以及构建视图和任何组件的(小)开销或部分。 HTTP 缓存告诉 client and/or 下游代理内容将在指定的时间段内保持有效 - 并且它可以从本地或代理缓存提供,而无需重新-要求。
值得注意的是,子操作可以应用 OutputCache - 允许您缓存页面中不会在用户之间更改的部分,同时仍然允许每个用户对所有页面进行自定义。这有时被称为 Donut Hole Caching(其中 "hole" 不会改变,但它周围的其余 "donut" 会改变)。
还有另一个 "donut caching" 的概念,其中大部分页面被一小部分(漏洞)缓存,但在 ASP.NET 中尚不支持开箱即用MVC.
OutputCacheAttribute 确实允许您指定 "location" - 客户端、下游、服务器、服务器和客户端 - 这允许一种方便的方法在一个地方指定客户端和服务器输出缓存,但每个都可以独立控制。