我有一个ASP.NET应用程序。加载页面的Index方法在数据库上执行查询。这些查询的开销很大,而且数据集很少更改,所以这是一个缓存的完美用例。
我将输出缓存中间件添加到Program.cs
文件中。
我想缓存服务器端输出,所以我在Index函数中添加了标志:
[HttpGet]
[OutputCache(Duration = 43200, NoStore = false)]
public IActionResult Index()
{
some code...
}
字符串
当我使用:https://web.app.com/Controller/Index
访问页面时,页面会按预期进行缓存。然而,当我用途:https://web.app.com/Controller/
(路由到同一个端点)时,页面无法缓存,即使在刷新后也是如此。
我知道每个唯一的URL都应该被服务器缓存。有什么原因会忽略根URL吗?
2条答案
按热度按时间9udxz4iz1#
可能原因是“https://web.app.com/Controller/“结尾的”/“字符。尝试摆脱它或使用重定向:
字符串
j2cgzkjk2#
我在
Program.cs
中更改了我的应用程序设置:字符串
致:
型
出于某种原因,这解决了问题--控制器的根URL现在被缓存了。
Microsoft文档指出,
MapDefaultControllerRoute()
是一个与第一个代码片段等效的方便方法。如果有人知道为什么这会有所作为,请随时发表评论。