gpt4 book ai didi

node.js - 使用 max-age=0,must-revalidate 表示静态服务器缓存控制

转载 作者:搜寻专家 更新时间:2023-10-31 23:28:31 25 4
gpt4 key购买 nike

我已经使用 express 设置了一个简单的静态服务器。

var location = path.join(__dirname, 'public');
app.use(express.static(location, { cacheControl: true, setHeaders: function(res, path) {
res.setHeader("Cache-Control","max-age=0,must-revalidate");
} }));

请求 header 使用 If-None-MatchIf-Modififed-Since 发送,我还可以看到 304 Not Modified如果我在不修改文件的情况下重新加载页面,Chrome 中的响应。如果我修改其中一个文件,我会收到 200 OK

但是,当状态代码为 304 Not Modified 时,为什么我的 Chrome 网络选项卡显示的是下载文件的大小而不是说 (from memory cache)

如果文件未被修改,我期待从缓存中加载文件,如果被修改,则从服务器提供。

感谢任何帮助和指导。

最佳答案

@sBanda 很好地描述了这种情况。收到 304 是预期的,因为指定的 cache-control 策略声明文件已过时,但 ETag 检查显示它没有更改。您得到 304 是因为您可能没有请求特定资源,但您却请求了,浪费了带宽和 CPU 负载。

你应该做些什么来避免它是这样的:

const express       = require('express');


const server = express();
const oneHour = 3600000; // 3600000msec == 1hour

server.use(express.static('www', { maxAge: oneHour })); // Client-side file caching

server.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});

server.listen(8080);

Source

关于node.js - 使用 max-age=0,must-revalidate 表示静态服务器缓存控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608042/

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