Bra*_*aby 8 caching http connect node.js express
我正在开发一个使用connect/express和node.js的应用程序.它使用像这样的"静态"中间件:
var express = require("express");
var io = require("socket.io");
var app = express.createServer(
express.static(__dirname + '/static')
);
app.listen(process.env.PORT || 8080);
var listener = io.listen(app);
var lobby = listener.of("/lobby");
lobby.on("connection", function (socket) {
// etc etc etc
});
Run Code Online (Sandbox Code Playgroud)
在内部./static,有一个文件夹,./static/mp3包含应用程序使用的88个音频文件.
虽然回访的访问者已经缓存了这些文件,但令他疯狂的是他们仍然发送了88个http请求,询问他们的缓存副本是否已过期. 如何仅为此文件夹强制执行Expires或max-age缓存?
Bra*_*aby 22
好的,一旦我意识到连接"中间件"方案如何工作,答案就很容易了.我的解决方案,到目前为止似乎工作得很好,是static在调用之前插入我自己的中间件express#createServer,如下所示:
var app = express.createServer(
(function(req, res, next) {
if(req.url.indexOf("/mp3/") === 0) {
res.setHeader("Cache-Control", "public, max-age=345600"); // 4 days
res.setHeader("Expires", new Date(Date.now() + 345600000).toUTCString());
}
return next();
}),
express.static(__dirname + '/static')
);
app.listen(process.env.PORT || 8080);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5362 次 |
| 最近记录: |