Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript缩小为整个站点的单个捆绑包,还是为每个页面捆绑包指定一个特定的捆绑包更好?_Javascript_Minify - Fatal编程技术网

将javascript缩小为整个站点的单个捆绑包,还是为每个页面捆绑包指定一个特定的捆绑包更好?

将javascript缩小为整个站点的单个捆绑包,还是为每个页面捆绑包指定一个特定的捆绑包更好?,javascript,minify,Javascript,Minify,在web开发中一起缩小Java脚本时,从用户加载时间的角度来看,是否更好: 制作一个包含所有脚本的大型JavaScript包,并将其包含在每个页面上——因此每个页面可能不需要全部脚本,但一旦用户缓存了脚本,他们就不需要再获取任何脚本(当然,直到脚本从缓存中过期为止)——优化请求数量 每个页面制作一个JavaScript包,这样每个页面只加载它所需的脚本,而不加载其他内容-因此第一次加载每个页面时肯定需要一个JS请求(但随后仍会缓存该请求)。优化请求的大小 我对一些数据感兴趣,这些数据可以作为决定

在web开发中一起缩小Java脚本时,从用户加载时间的角度来看,是否更好:

  • 制作一个包含所有脚本的大型JavaScript包,并将其包含在每个页面上——因此每个页面可能不需要全部脚本,但一旦用户缓存了脚本,他们就不需要再获取任何脚本(当然,直到脚本从缓存中过期为止)——优化请求数量
  • 每个页面制作一个JavaScript包,这样每个页面只加载它所需的脚本,而不加载其他内容-因此第一次加载每个页面时肯定需要一个JS请求(但随后仍会缓存该请求)。优化请求的大小

  • 我对一些数据感兴趣,这些数据可以作为决定采用哪种策略的基础。我可以像其他人一样轻松地根据轶事得出结论:-)

    我更愿意为整个站点使用一个缩小的js文件。在一段时间内,这总是比拥有多个js文件更好


    查看此链接了解更多详细信息,这实际上取决于脚本的大小和功能。通常,您的所有页面都有一个master.js,其中包含站点每个页面所需的所有功能,而其他js文件则提供可能仅在某些页面上需要的功能


    以堆栈溢出为例。他们在网站的每个页面上都包含一个master.js文件,但是当你访问一个问题页面或“提问”页面时,你会注意到wmd.js。此脚本包含编辑器的所有功能,这些功能只需较少的页面即可使用。

    这完全取决于脚本中的内容。如果你有大量的小函数供大量页面使用,那么是的,一个文件将是最好的。如果您有一个只由一个页面使用的大型脚本,通常不希望通过将其包含在共享脚本中来减慢最初的首页加载时间

    因此,您通常会得到一个折衷方案,在一个脚本中共享所有页面的基本函数,在每页或每页组脚本中共享更复杂和特定的函数。将整个选项2放在一边,并为每个页面提供一个完全独立的脚本,这几乎没有什么好处


    在一个文件中共享功能和单独的页面特定复杂脚本通常也更易于维护。

    如果您是在ASP.NET MVC中实现网站,那么您可能会发现以下方法是最明智的,我一直都在使用

    列出项目中使用的所有JavaScript文件——到处都使用的文件和许多或大多数页面使用的文件。这定义了您的公共包,您应该从母版页中包含它。MVC4的捆绑和缩小功能发挥了神奇的作用,您只需列出它们

    JavaScript的其余部分通常用于本地使用,即仅在一个视图中有效地实现该视图。因此,它应该驻留在视图中,完全未压缩

    例如,我在视图中广泛使用AngularJS,因此每个这样的视图都包含自己的角度控制器和其他需要的局部元素。根据视图的复杂性,它甚至可以有自己的一组指令、服务和工厂,尽管这些通常会进入一到两级的局部视图


    底线是,不要试图用本地使用的绑定JavaScript来增加自己的负担。只捆绑最普通的东西,只在一个地方做——你的产品主页。在使用本地JavaScript的本地文件中不压缩本地JavaScript。这对性能没有实际影响,同时使您的代码更易于理解和维护。

    事实上,现在使用http2,几乎可以肯定不必麻烦缩小,因为我仍将尝试一个捆绑包,用于主页+第一个深度链接,然后当链接/路由打开(缓存)时,获得第二深度的捆绑,以此类推