在返回的 html 页面中插入缩小的 javascript

本文关键字:插入 缩小 javascript 返回 html | 更新日期: 2023-09-27 18:33:11

我想知道是否有办法让 MVC5 在返回的页面中以缩小的形式包含我所有的 javascript。

即浏览器不需要加载外部文件,例如AllMyMinifiedbundledJavaScripts.js其内容已经包含在我的页面中的<script>标签中

这样做的好处应该是:

  1. 页面加载速度更快,因为请求更少
  2. 在运行脚本之前,无需真正等待文档加载。
  3. 谷歌正在这样做,我想看看我是否喜欢它(检查 google.com 上的来源(。

我想不出任何理由为什么这是一个可怕的想法......如果有的话,请启发我。

在返回的 html 页面中插入缩小的 javascript

缓存

文件和内联文件之间存在权衡。与每次都必须下载的内联脚本标记相比,缓存的大文件在对同一页面的后续请求中加载速度更快。

Html 5 支持对脚本文件的异步请求,因此,如果您要显示不依赖于脚本的有意义的内容,则可以在代码上指定async

Google正在为Apache和Nginx使用一些模块,并演示它们如何能够以编程方式内联它们。

否则,这里有一小段未经测试的代码,它完成了你想要的......

var bundleURL = Scripts.Url("~/bundles/jquery");
var fullUrl = (Request.Url.GetLeftPart(UriPartial.Authority) + bundleURL.ToString());
var client = new WebClient();
var minJS = client.DownloadString(fullUrl);
ViewBag.Javascript = minJS;
<script type="text/javascript">
    @ViewBag.Javascript
</script>

是的,最小化请求的目标导致了另一个请求。由于捆绑在MVC中的工作方式,这是一个失败的原因。捆绑包是一个虚拟文件,在发出请求之前不存在。所以你必须嘲笑这种行为才能得到正确的东西。可能更好的方法(虽然更乏味(是独立缩小,然后打开并读取文件,而不是提出请求。