【发布时间】:2018-02-25 13:40:31
【问题描述】:
我有点困惑。我在下面有我的 _layout.cshtml 页面,它有一堆包含 .css 和 .js 文件的包。当我第一次加载站点时,它会遍历捆绑包中的每个文件。不错不错不错!但是在每个新视图上,每个文件的每一行代码都会再次运行! (例如 jQuery、bootstrap 等)我设置了断点来测试它,每次加载新视图时它们都会被击中。
我认为浏览器的全部目的是缓存这些文件,这样它们就不会在每次调用新视图时加载?我在这里缺少一些理解吗?我没有正确设置布局吗?它们是否没有被加载但代码正在运行(这就是为什么我的所有断点都被击中)每个新视图?
有没有办法设置它,这样就不会发生这种情况,并且当我的客户访问我的主页时,所有文件都会加载一次?我不明白为什么每个 .js 文件(例如 bootstrap)都会加载到每个加载的视图上!!
这是我的布局页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>Yogabandy - @ViewBag.Title</title>
@Styles.Render("~/Content/yogabandy-base/css")
@RenderSection("content", required: false)
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@Html.Partial("_Navbar")
@RenderBody()
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDUWFuy0zfuKe4uig_koh3O6SRDaf40gA4&libraries=places" async defer></script>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/yogabandy-base")
@RenderSection("scripts", required: false)
</body>
</html>
【问题讨论】:
-
浏览器会缓存它们。但是 JavaScript 必须经过解析和加载才能运行...如果您的 JavaScript 没有在每次页面加载时都运行,您会感到不安。
-
所以你的意思是浏览器不会重新下载它们,但仍然会在每个加载的页面视图上运行它们?
-
是的,这就是浏览器的工作方式。检查浏览器开发者工具中的网络标签;您应该看到脚本加载“(从缓存)”或“304 Not Modified”响应。如果它没有再次运行它们,新页面上不会发生任何事情。
-
好的,谢谢 Mike,我知道这有点离题,但是您知道如何在 Visual Studio 和 Chrome 中加快网站的加载时间(包括初始页面和之后的每个视图) . Visual Studio 只需要很长时间才能加载我的站点来调试它。 ~30-60 秒。可能和我的机器有关!!运行带有 Win 10 和 VS 2017 的 VMWare 的 MACbook air '13。我应该出去买一台 4 核 Windows 机器,看看它是否有助于加载时间来调试我的网站???
-
好吧,在 VM 中运行 VS 可能是罪魁祸首。我会直接在 Mac 上使用 VS Code。此外,如果您正在调试远程服务器,则一切都必须通过网络进行。
标签: javascript html asp.net-mvc scriptbundle