gpt4 book ai didi

asp.net-mvc - 我是否应该将可能已缓存在浏览器中的文件捆绑到 ASP.Net 中?

转载 作者:行者123 更新时间:2023-12-02 04:26:35 25 4
gpt4 key购买 nike

许多代码示例以及 Visual Studio 2012 为新的 MVC 应用生成的 BundleConfig.cs 中的默认 RegisterBundles 方法,都包含类似这样的代码来添加常见 JavaScript 文件就像 jQuery 一样:

    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));

在一定比例的情况下,用户的浏览器的缓存中已经有这些常见文件。因此,等待通过捆绑再次下载文件似乎很浪费。

除非浏览器能够识别出捆绑文件(可能与其他文件连接并缩小)已经存在,否则这种捆绑的使用似乎根本不会加快速度,反而会导致不必要的延迟。

或者我在这里遗漏了什么?也许“通用”文件(jQuery 等)已经被缓存的可能性很低?

最佳答案

“用户的浏览器缓存中已包含这些常见文件”

不正确。您正在引用您的本地副本,因此只有当他们之前访问过您的网站时它才会出现在缓存中...并且如果您之前没有使用捆绑,那么不会,它不会被缓存。不过,在第一次下载后,它会保持缓存状态,直到您更改脚本。

如果您想引用用户可能已缓存的版本,那么您可以使用 CDN。以下代码来自ASP.NET Bundling and Minification

public static void RegisterBundles(BundleCollection bundles)
{
bundles.UseCdn = true; //enable CDN support
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include(
"~/Scripts/jquery-{version}.js"));
}

如果 CDN 失败,则后备:

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

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
var e = document.createElement('script');
e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
e.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(e);
}
</script>

关于asp.net-mvc - 我是否应该将可能已缓存在浏览器中的文件捆绑到 ASP.Net 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18965429/

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