脚本包每次生成不同的标识符?

时间:2015-01-07 00:57:47

标签: asp.net-mvc asp.net-mvc-4 web bundling-and-minification bundles

所以这个项目我实现了捆绑(System.Web.Optimization)以最小化样式和脚本的加载时间。我的经理目前正在寻找缩短加载时间的方法,因为它仍然花费太长时间,他认为其中一个原因是Bundling无法正常工作。因此,我一直在监视开发人员控制台上脚本的加载时间,看看是否由于某种原因没有启用缓存,虽然一切看起来都很好,但我注意到的唯一奇怪的事情是标识符有不同的& #34;第二个令牌"每次重新加载同一页面。像这样:

http://mypage.com/bundles/Kendo?v=Ly4JCrjDqtOYRbxqbD1I-ubxLYyNieOlYxSxoMmPLYA1&_=1420587597283
http://mypage.com/bundles/Kendo?v=Ly4JCrjDqtOYRbxqbD1I-ubxLYyNieOlYxSxoMmPLYA1&_=1420587659994
http://mypage.com/bundles/Kendo?v=Ly4JCrjDqtOYRbxqbD1I-ubxLYyNieOlYxSxoMmPLYA1&_=1420589994757

标识符始终相同,但最后的标记每次都不同。我一直环顾四周试图看看这是否在其他地方得到解决,但没有找到任何东西。所以我要问的是,这种正常行为并没有什么可担心的吗?

如果有帮助,这是实现的代码:

    public class BundleConfig
    {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = true;

            bundles.Add(new ScriptBundle("~/bundles/Kendo").Include(
                   "~/Scripts/kendo/2014.3.1119/kendo.all.min.js",
                   "~/Scripts/kendo/2014.3.1119/kendo.aspnetmvc.min.js"));
        }
    }

@Scripts.Render("~/bundles/Kendo")

在其各自的html页面的meta部分。

1 个答案:

答案 0 :(得分:1)

在查看加载时间时,需要考虑许多因素。

首先,如果您不确定捆绑正在做什么,或者您担心它是在每个请求上生成的,那么请查看您的IIS日志,看看捆绑请求是否得到304响应(内容未更改)将告诉您捆绑已被浏览器按预期缓存,或者确实每次都在制定新捆绑包。

确保您使用支持缓存的浏览器,我知道在Chrome中您可以将其关闭以帮助进行调试,这会导致结果出现偏差。

此外,请确保您在web.config中使用编译debug =“false”运行以利用Razor视图缓存,而不是通过IO访问来查找每个请求的视图。

检查您是否在每个视图上盲目加载每个视图,无论视图的使用如何。例如,如果您有任何处理验证用户输入的包,那么请确保仅在这些视图进行用户输入时加载这些包,并将它们保存在只读视图中。

我会推荐像Glimpse这样的东西来帮助您诊断加载时间的花费。它可以帮助您确定可能存在的浪费。

如果您在控制器级别使用“授权”属性,请确保对任何不需要授权的操作使用“匿名”,以确保您不会花时间授权不需要的用户。

最后,检查您的IIS设置,确保您只加载了所需的模块,并启用了压缩功能,以加快内容交付。