gpt4 book ai didi

javascript - 优化 javascript 和 css 请求

转载 作者:可可西里 更新时间:2023-11-01 02:53:51 25 4
gpt4 key购买 nike

我需要优化几个现有网站的加载速度。我遇到的问题之一是每页的请求量。这些网站有 7 种或更多不同类型的页面,它们应该加载不同的 css 和 javascript 集,因为它们包含不同的小部件或功能。目前每个小部件或功能都有自己的 javascript 文件。我计划合并和缩小文件以减少请求。

  1. 将每种类型页面上所需的所有 javascript 组合并缩小到一个文件中(并对 css 执行相同操作)是否是一种好的做法?例如
    • 首页只有一个homepage.js ,
    • 列表页面只有listing.js ,
    • 详情页只有detail.js ,
    • 等等
  2. 只合并那些经常一起使用的文件是否更好?例如
    • jquery.js + jquery.cookie.js + common.js ,
    • list.js + paging.js + favorite.js ,
    • detail.js + favorite.js ,
    • 等等
  3. 为所有应在头部加载的 javascript 编写一个文件,为所有应在主体末尾加载的 javascript 编写一个文件如何?
    • init.js转到 <head>do.js转到 <body> .
  4. 如果用户具有特定权限,则加载一个用于公共(public)功能的文件和一个用于管理功能的文件怎么样?
  5. 是否有任何策略可以在 1.、2.、3. 和 4. 之间取得平衡?
  6. 一个页面的推荐 javascript 和 css 请求量是多少?

我正在考虑大型网站 a.k.a. 门户或社交网络。

(顺便说一句,有些库的请求我无法控制,例如 TinyMCE 或谷歌地图)。

最佳答案

通常你可以使用下面的模式:

  1. ma​​in.js - 在此处捆绑多个页面使用的所有脚本在网站上。
  2. page.js - 页面特定的所有 js。这意味着捆绑 将所有小部件的 js 放在一起 页面。

通过这种做法,您在每个页面上只有 2 个请求,并且您在 JS 中获得了清晰的分离/结构。对于除第一个页面之外的所有页面,这将只是一个请求,因为 ma​​in.js 将被缓存。

您也可以对 CSS 使用相同的原则。这是有效的,但正如另一个答案所提到的,您实际上可以更进一步并将所有内容捆绑在 1 js 中。它是一种偏好或风格。我喜欢将它分成 2 部分,因为它让事情对我来说更合乎逻辑。

不过请确保以下内容:

  1. 为您的 JS 命名空间,否则当您将它们捆绑在一起时可能会出现错误。
  2. 帮您的页面一个忙,将它们推到页面底部。

编辑:我想我会更新答案以回答您的一些观点。

要点 2:只合并那些经常一起使用的文件是否更好?

Ans:就我个人而言,我不这么认为。如果您正在服务所有一起使用的文件,那么它们属于哪个组或它们如何出现在页面上都无关紧要。这是因为我们组合了 JS 文件以减少 HTTP 请求量。

一旦您的 JS 在 PROD 中被组合和缩小,您就不需要调试或理解它了。因此,将逻辑上相关的 JS 文件绑定(bind)在一起是一个有争议的问题。它在您的开发环境中,您希望将所有这些逻辑相关的代码文件放在一起。

第 3 点:为所有应在头部加载的 javascript 设置一个文件,为所有应在主体末尾加载的 javascript 设置一个文件怎么样?

Ans:在某些情况下,您会以某种方式被迫在 HEAD 中注入(inject) JS。理想情况下,您不应该这样做,因为 SCRIPT 标记本质上是阻塞的。因此,除非您确实需要,否则请将所有 JS(1 个或多个文件)放在 BODY 标记的末尾。

第 4 点:如果用户具有特定权限,则加载一个用于常用功能的文件和一个用于加载管理功能的文件怎么样?

回答:这似乎是拆分 JS 代码的合理方法。根据用户权限,您可以 fork 您的 JS 代码。

第 6 点:一个页面的推荐 javascript 和 css 请求量是多少?

Ans:这是一个非常主观的问题。这取决于你在 build 什么。如果你担心在页面加载时加载过多的 JS,你可以随时拆分并使用按需 SCRIPT 注入(inject)方法来拆分负载。

关于javascript - 优化 javascript 和 css 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090017/

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