gpt4 book ai didi

azure - 为什么指向 Azure 共享缓存的 Web outputCache 配置部分会减慢每个请求的速度?

转载 作者:行者123 更新时间:2023-12-01 01:13:50 25 4
gpt4 key购买 nike

我的问题类似于this one ,但我的问题是 Windows Azure 共享缓存,而不是较新的 Windows Azure 缓存。

这真是一个奇怪的问题。我设置了共享的 azure 缓存并在一项托管云服务上工作。该应用程序将其用于 sessionStatecaching/outputCache 。该应用程序根本没有延迟问题。它与共享缓存一样部署在美国中北部。

我还有第二个托管服务,它也部署到美国中北部。我已将第二个应用程序配置为使用相同的共享缓存。奇怪的是:当我配置 <caching>/<outputCache> 时将 web.config 中的部分指向共享缓存,每个 (MVC4) Web 请求都会减慢至大约 5-6 秒。当我注释掉这个 web.config 部分时,Web 请求速度要快得多(约 100 毫秒)。

这似乎不是缓存连接本身的延迟问题,因为我仍然对 sessionState 使用相同的共享缓存,而且速度很快。另请注意,所有 MVC4 操作均未使用 OutputCacheAttribute。只需将 outputCache 部分添加到 web.config 并重新部署即可重现延迟。

这两个应用位于同一数据中心区域,使用相同的虚拟机大小、实例和 osFamilies。我能想到的它们之间的唯一区别是第一个(没有延迟问题的)是 MVC3 应用程序,而第二个是 MVC4 应用程序。

为什么简单地添加指向 Windows Azure 共享缓存的缓存/outputCache 配置部分会减慢每个 MVC4 请求的速度?

更新1:

我现在能够重现此问题,而无需部署到 azure。我设置本地 VS/IIS Express 安装以将相关共享缓存用于 session 和输出缓存。在我更改此 web.config 设置之前,我得到了亚秒响应:

<compilation debug="false" ... <!-- changed this from true to false

当关闭 system.web 部分中的调试 Hook 时,我开始获得 5-6 秒的响应时间(已复制)。这可能是 MVC4 中的捆绑和缩小功能的问题吗?非常奇怪的是,关闭调试编译会增加响应延迟约 10 倍......

更新2:

MiniProfiler 告诉我,是的,超过 4 秒的延迟来自 MVC _Layout.cshtml 中我的 @Scripts.Render("~/bundles/mybundle") 之一。 web.config 中的 outputCache 设置似乎正在影响捆绑脚本的 Release模式渲染。但是为什么?

最佳答案

优化框架当前不支持非默认输出缓存提供程序,因为在过去这会导致异常,因此在这些情况下服务器缓存被禁用,这会导致您看到的高开销。我认为现在我们已经转向 VirtualPathProviders,我们在使用非默认提供程序时遇到的问题可能会得到解决,并且我们现在可能能够支持这种情况。

我在我们的 codeplex 网站上提交了一个工作项目来跟踪此内容:Issue Link

更新:此问题应在 https://nuget.org/packages/Microsoft.AspNet.Web.Optimization/1.1.0-Beta1 中修复

关于azure - 为什么指向 Azure 共享缓存的 Web outputCache 配置部分会减慢每个请求的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363434/

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