为什么使用散列CSS样式表和Javascript文件名?

时间:2017-11-14 15:53:40

标签: javascript php html css hash

在深入研究一些最受欢迎网站的代码时,我已多次看到,CSS和JavaScript文件名是这样的,

<link type="text/css" rel="stylesheet" href="//sample.com/css/css__k3sYInttBtNNuJgtPSyqaYy9vVxS4qTZLrfs1ujQB9g__SH_QaIH3bnSp3nOw8n8afhszfHJlxVt51qRlrrrOnk0__fBOuweRojwN82z7EY4v-sVsMwU_P_vZSaU3fmyho6Do.css" media="all" />

<script type="text/javascript" src="//sample.com/js/js__-V23Vc4PVahQcqfyxss_rmNogErBARnPCvI7oPXC0qQ__O-yO5Gg8pRRaefl4d0X9qXUJTOSHq0yazxF-4tJCU_k__fBOuweRojwN82z7EY4v-sVsMwU_P_vZSaU3fmyho6Do.js"></script>

似乎文件名已被哈希,我不知道是什么原因。所以我遇到了以下问题。

  1. 使用这种方法的目的是什么?

  2. 我也见过非常复杂的文件夹名称。那是为什么?

  3. 是否有任何安全问题?

  4. 我们可以使用PHP动态更改文件/文件夹名称以获得最大安全性吗?

  5. 我对这个领域并不熟悉。

1 个答案:

答案 0 :(得分:5)

您可以假设这些文件/文件夹名称不是开发人员在开发阶段使用的内容,而是文件的工件&#39;构建过程。 JavaScript和CSS通常由几个源文件构建到单个文件中,涉及或多或少的编译/转换和捆绑步骤。

您希望文件名为/包含文件哈希的原因是,会在文件更改时强制缓存失效。静态文件可以由浏览器,服务器和其间的许多其他代理缓存。只要文件没有改变,这就没问题。但是,在发布新版本时,应为该用户提供此新版本。如果资源的文件名发生更改,浏览器将始终从服务器请求新版本的文件,而不是使用缓存版本。

您应不依赖此类复杂文件名作为安全/授权功能。文件名在应用程序的索引文件中引用,因此为最终用户所知。此外,默默无闻的安全通常是一个坏主意。