gpt4 book ai didi

IIS7.5 OutputCacheModule 内核缓存 'public' 忽略 URL

转载 作者:行者123 更新时间:2023-12-01 23:35:16 26 4
gpt4 key购买 nike

在 IIS 7.5 上的 ASP.NET 4 应用程序中有一些关于输出缓存的奇怪行为。我已经能够简单地在其他空设置上重复这个问题,我确定这是一个错误,但不确定如何向 Microsoft 报告它。

IIS 中的站点响应超过 1 个域,.NET 应用程序检查主机名,并相应地生成内容。例如,它可能会在空白页中打印请求 URL 的名称。例如,www.first-domain.com 和 www.second-domain.com

web.config 在 system.webServer 节点下将适当的缓存、urlCompression 和 httpCompression 全部关闭。

aspx 页面将缓存控制 header 设置为 public,带有 future 的过期日期或 max-age 值。

访问www.first-domain.com输出成功写入'www.first-domain.com'的页面。

但是,访问 www.second-domain.com 会输出一个写着“www.first-domain.com”的页面。

检查失败的请求跟踪,System.Web.Caching.OutputCacheModule 已找到缓存的输出(即使 .config 文件已关闭该功能),缓存已匹配,即使请求 URL 主机名不同,因此,在第二个域的正确页面出现之前,只要设置了最长期限/到期时间,第二个请求就会将第一个请求的结果输出到不同的域。

要么将缓存控制设置为私有(private),要么在 web.config 中删除“OutputCache”模块解决问题,同时保持发送到浏览器的正确缓存控制 header ,但显然,我无法利用在我需要时进行内核缓存。

我找不到任何关于如何配置 OutputCacheModule 的 MSDN 文档。

有没有其他人遇到过这个问题,我怎样才能启用内核缓存并让它考虑 URL 主机名(而不将应用程序分离到 IIS 中的不同站点)。

谢谢。

更新:

添加 SetSlidingExpiration 没有效果,因为无论请求主机名如何,内核缓存仍然缓存输出。现在唯一的方案是要么禁用输出缓存,要么在它将运行的每个域上运行应用程序的重复实例 - 考虑到服务器性能的下降,这将导致使用输出缓存获得的性能增加,我们决定禁用此应用的输出缓存。

最佳答案

9个月后没有给出答案,也没有找到解决方案,只有一个workaround,也许这个会在IIS 7.5以上的下一个版本中修复...

--

添加 SetSlidingExpiration 没有效果,因为无论请求主机名如何,内核缓存仍然缓存输出。现在唯一的方案是要么禁用输出缓存,要么在它将运行的每个域上运行应用程序的重复实例 - 考虑到服务器性能的下降,这将导致使用输出缓存获得的性能增加,我们决定禁用此应用的输出缓存。

关于IIS7.5 OutputCacheModule 内核缓存 'public' 忽略 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com