Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么指向Azure共享缓存的Web outputCache配置部分会降低每个请求的速度?_Azure_Asp.net Mvc 4_Outputcache_Bundling And Minification_Azure Caching - Fatal编程技术网

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

为什么指向Azure共享缓存的Web outputCache配置部分会降低每个请求的速度?,azure,asp.net-mvc-4,outputcache,bundling-and-minification,azure-caching,Azure,Asp.net Mvc 4,Outputcache,Bundling And Minification,Azure Caching,我的问题与类似,但我的问题是Windows Azure共享缓存,而不是较新的Windows Azure缓存 这真是个奇怪的问题。我设置了一个共享azure缓存,并在一个托管云服务上工作。应用程序正在将其用于会话状态和缓存/输出缓存。该应用程序根本没有延迟问题。它部署在美国中北部,共享缓存也是如此 我还有第二个托管服务,它也部署在美国中北部。我已将第二个应用程序配置为使用相同的共享缓存。奇怪的是:当我将web.config中的/部分配置为指向共享缓存时,每个(MVC4)web请求的速度都会降低到大

我的问题与类似,但我的问题是Windows Azure共享缓存,而不是较新的Windows Azure缓存

这真是个奇怪的问题。我设置了一个共享azure缓存,并在一个托管云服务上工作。应用程序正在将其用于
会话状态
缓存/输出缓存
。该应用程序根本没有延迟问题。它部署在美国中北部,共享缓存也是如此

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

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

这两个应用程序都位于相同的数据中心区域,使用相同的vm大小、实例和OS系列。我能想到的唯一区别是第一个(没有延迟问题的)是MVC3应用程序,而第二个是MVC4应用程序

为什么简单地添加指向Windows Azure共享缓存的缓存/输出缓存配置部分会降低每个MVC4请求的速度

更新1:

我现在可以在不部署到azure的情况下重现此问题。我将本地VS/IIS Express安装设置为在会话和outputCache中使用有问题的共享缓存。在更改此web.config设置之前,我一直收到次秒的响应:

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

我可以确认你的发现。如果我禁用了所有CSS/脚本绑定/缩小,我就不会经历CPU峰值和缓慢。显然,这是由于捆绑和/或缩小的原因

这是我的_Layout.cshtml上的内容。删除它=没有CPU问题。包括它将导致CPU峰值/缓慢

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/kendoui")

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

我在我们的codeplex网站上提交了一个工作项来跟踪这一点:


更新:这个问题应该在

中解决,通过从(谷歌的)CDN获取jquery和jquery UI,我能够获得更快的响应时间。可能想尝试一下,它不会完全解决问题,但应该可以更快地做出响应。再次感谢郝,我将关注这个问题。目前,建议的解决方法是什么?我们是否应该缩小和优化捆绑包,忽略azure缓存提供程序?或者使用azure缓存提供程序并禁用捆绑包优化?如果答案是“视情况而定”,我们应该使用什么样的阈值参数来做出决定?