【发布时间】:2019-09-04 09:05:10
【问题描述】:
具体来说,.Net Core(3.0 或更早版本)中是否有任何方法可以将本地文件系统用作响应缓存,而不仅仅是在内存中?
经过大量研究,最接近的似乎是响应缓存中间件 [1],但事实并非如此:
- 允许无限期缓存页面,
- 在应用程序和服务器重新启动之间保留缓存,
- 允许在每页的基础上使缓存失效(例如更新博客条目),
- 允许在进行全局更改(例如主题更新、菜单更改等)时使整个缓存失效。
我猜这些功能需要自定义实现 ResponseCaching 来访问本地文件系统,但如果它已经存在,我不想重新发明它。
一些背景:
这将取代我们使用静态站点生成器,由于数据量巨大(将近 24 小时生成并复制到所有服务器),这对于站点范围的更改是有问题的。
该场景与百科全书或新闻网站非常相似——绝大多数内容很少更改,每天都会添加一些内容,并且没有特定于用户的内容(如果有的话,它将通过 JS/Ajax 动态加载)。此外,页面加载恰好是处理器/内存/数据库密集型的。
我们将使用 CloudFlare 或 AWS CloudFront 等反向代理,但 AWS 每天都会自动使它们的边缘缓存过期。边缘节点缓存未命中仍然频繁。
这与 IDistributedCache [2] 的不同之处在于它应该是响应缓存,而不仅仅是缓存 MVC 模型使用的数据。
我们还将使用内存缓存 [3],但同样,这解决了不同的缓存场景。
参考文献
[1]https://docs.microsoft.com/en-us/aspnet/core/performance/caching/middleware
[2]https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed
[3]https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory
【问题讨论】:
-
阅读:stackoverflow.com/help/on-topic。它可以帮助您理解为什么您被否决,以及为什么这篇文章的票数接近。这篇文章是题外话,因为您要求图书馆推荐。另外,你发了一次deleted it,然后又发了一次,这很烦人。
-
@R.Richards - 谢谢你的解释。在多次修改这个问题之后,它似乎已经不同到足以保证一个不同的问题,但我将来肯定会避免这样做。最终,我想使用“just .Net Core”,并且以一种与开箱即用的功能非常相似的方式使用。事实上,他们很可能只用一个我找不到的标志来提供该功能。 “图书馆”这个词可以说是放错了地方。感谢您引起我的注意。
标签: asp.net-core asp.net-core-mvc asp.net-core-middleware