【问题标题】:why so complicated name for javascript and css files?为什么 javascript 和 css 文件的名称如此复杂?
【发布时间】:2013-02-25 17:17:21
【问题描述】:

我找到了这个网址

https://petitions.whitehouse.gov/sites/default/files/js/js_UiAlkc-vULf24xt5asxqvUtyoWeGDuXLXt7ti6xNnGg.js

作为网站https://petitions.whitehouse.gov/中javascript文件的来源(src)。

还有这个

https://petitions.whitehouse.gov/sites/default/files/css/css_7HCSWa0-mjR4tMqcKk2MWsaQFvHYUU9FuXNLwF5yIEY.css

对于 css 文件。

问题是为什么 javascript 或 css 文件使用如此复杂的名称? 是由于任何框架还是什么?即使是由于任何框架,问题仍然存在。

【问题讨论】:

  • @yabol,问题仍然存在..

标签: javascript css url


【解决方案1】:

这可能是由于 'minification' 进程删除了生产不需要的任何字符/符号(换行符 / cmets 等)。

通常此过程是'Bundling' 的一部分,它不仅会缩小每个源文件,还会将多个源 (css/js) 文件组合在一起以减少 HTTP 请求的数量。

然后,每个“捆绑包”结果都以唯一名称保存,因此下一次捆绑包迭代将具有另一个唯一名称,以防止 caching 并能够反映新修改捆绑包的更改。

【讨论】:

    【解决方案2】:

    这是一种通过散列存储静态文件的技巧。

    这种存储的目的是继续提供旧静态文件的版本,以防某些页面仍然引用它们,例如因为它们是由您或第三方代理服务器缓存的。此外,如果您想将far future Expires headers 应用于已部署的文件以加快后续页面访问的加载时间,这将非常有帮助。

    【讨论】:

    • 其实很简单。点击链接可以更好地了解远期过期标头,以及它们如何与不同版本的静态文件相关联。 “请记住,如果您使用未来的 Expires 标头,则必须在组件更改时更改组件的文件名”
    【解决方案3】:

    它可能是由某种压缩器/混淆器生成的名称。
    这很复杂,因为每次编译 CSS/JS 脚本都会创建新版本的脚本,并且为了防止浏览器从缓存中加载旧版本,应该使用新名称。

    【讨论】:

    • css/js 脚本的编译——你能在这里多解释一下吗?
    • 我仍然会使用版本号来强制加载新脚本,而不是一些生成的哈希字符串 stackoverflow.com/questions/32414/… 更好的方法 imo
    【解决方案4】:

    这些文件名看起来像是被散列和/或版本化的。这很可能确保始终加载正确的样式、JavaScript 和资产。它也可能是机器生成或缩小的结果。

    【讨论】:

      【解决方案5】:

      虽然这里的每个答案都正确地解释了为什么 CSS 和 JavaScript 被合并到每种语言的单个文件中(即所有 CSS 都在一个文件中,所有 JavaScript 都在一个文件中),但没有人给出真正的理由解释为什么可以使用字母数字字符串 - 代替线性数字 id 或版本号。

      在这种情况下,使用字母数字哈希的主要原因通常是不希望存储与聚合有关的额外数据的麻烦或延迟。每当您拥有一个自动化系统时,如果您想要一个递增的数字,您需要将该数字存储在某个地方,即数据库中。如果您希望这个数字成为版本号,它会变得更加复杂,因为这意味着您必须为每个 emalgamated 文件存储一个单独的数字(使用 CMS 时,emalgamed 文件的数量可能会迅速变化,这完全取决于正在加载的内容在该特定页面上)。

      简而言之,在呈现 HTML 源代码时,使用 MD5 或 SHA1 之类的东西根据盐值和当前时间戳生成字母数字哈希要容易得多。由于生成的哈希的长度和基于不断增加的时间戳,这些函数几乎可以保证与以前的值不冲突(在涉及缓存时,您希望避免,正如其他海报所说的那样)。

      随机改变文件名的另一个好处是它可以防止外部用户进行盗链或其他恶意技巧。这对于 CSS 来说不是什么大问题,但对于 JS 来说可能是这样。

      【讨论】:

      • CSS 和 JavaScript 已合并到一个文件中 - 什么意思?
      • @IstiaqueAhmed - 大多数聚合方法将所有 css 文件合并到一个文件中,并将所有 js 文件合并到一个文件中。这样做的原因是为了减少浏览器需要建立的服务器连接。这就是我的意思,为了清楚起见,我将重写它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2017-10-27
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多