📅  最后修改于: 2023-12-03 15:30:01.865000             🧑  作者: Mango
在编写 Web 应用程序时,通常需要引用很多 CSS 文件。为了提高页面加载速度并降低带宽消耗,我们通常会将这些 CSS 文件合并为一个文件,从而减少 HTTP 请求次数。在这种情况下,我们可以为合并的 CSS 文件生成哈希值,以确保每次更新后都能正确加载新的 CSS 文件。
现在,我们将使用 cmd 命令行来生成 CSS 文件的哈希值,以及如何在 Web 应用程序中使用哈希文件。
要生成哈希文件,我们将使用 Node.js 中的 crypto
模块和 cmd 命令行。
以下是生成 CSS 文件哈希值的命令行代码片段:
```bash
# 进入 css 文件夹
cd css/
# 生成哈希文件
echo $(cat *.css | openssl dgst -sha384 -binary | openssl base64 -A) > hash.txt
```md
上述代码中,我们先进入 css
文件夹,再使用 openssl
命令对所有 CSS 文件进行哈希计算,并将结果存储在一个名为 hash.txt
的文件中。
在 Web 应用程序中,我们可以动态加载 CSS 文件,并使用哈希文件来确保每次更新后浏览器都会加载新的 CSS 文件。
以下是在 HTML 文件中动态加载 CSS 文件的代码片段:
```html
<link rel="stylesheet" href="/css/main.css?hash=<%= fileHash %>" />
```md
在上述代码中,我们使用一个类似于 <%= ... %>
的模板引擎语法来动态生成哈希值。例如,使用 Express 框架的路由处理函数中的代码可以如下所示:
```javascript
const fs = require('fs');
const crypto = require('crypto');
const express = require('express');
const app = express();
// 从文件读取哈希值
const fileHash = fs.readFileSync('css/hash.txt').toString();
app.get('/', (req, res) => {
res.render('index.html', { fileHash });
});
```md
在上述代码中,我们使用 fs.readFileSync
方法从 css/hash.txt
文件中读取哈希值,并传递给 render
方法以供模板使用。
在本文中,我们使用 cmd 命令行和 Node.js 中的 crypto
模块,生成了一个 CSS 文件的哈希值,并演示了如何在 Web 应用程序中动态加载 CSS 文件并使用哈希文件来确保每次更新后浏览器都会加载新的 CSS 文件。