1

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

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

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

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

    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 部分。

4

1 回答 1

1

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

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

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

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

无论视图的使用如何,检查您是否没有盲目地在每个视图上加载每个包。例如,如果您有任何处理验证用户输入的包,则确保仅在这些视图接受用户输入时才加载这些包,将它们保存在只读视图上。

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

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

最后,检查您的 IIS 设置以确保您只加载了您需要的模块并打开了压缩工具以加快内容交付。

于 2015-01-07T08:52:04.667 回答