I have read that to avoid cache in nodejs it is necessary to use:
"res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');"
But I don't know how to use it because I get errors when I put that line in my code.
My function (where I think I have to program no cache) is:
function getFile(localPath, mimeType, res) {
fs.readFile(localPath, function(err, contents) {
if (!err) {
res.writeHead(200, {
"Content-Type": mimeType,
"Content-Length": contents.length,
'Accept-Ranges': 'bytes',
});
//res.header('Cache-Control', 'no-cache');
res.end(contents);
} else {
res.writeHead(500);
res.end();
}
});
}
Does anyone know how to put no cache in my code? thanks
Make use of a middleware to add
no-cache
headers. Use this middleware where-ever you intend to turn caching off.Use the middleware in your routes definition:
Let me know if this works for you.
Set these headers on your response:
If you use express you can add this middleware to have no cache on all requests:
After spelunking through source code for the express and fresh modules, this works from the server side (before res.end is called):
Nasty, but it works.
You can use nocache Middleware to turn off caching.
Apply the middleware to your app
This disables browser caching.
Pylinux's answer worked for me, but upon further inspection, I found the helmet module for express that handles some other security features for you.
http://webapplog.com/express-js-security-tips/
To use, install and require helmet in express.js, then call
app.use(helmet.noCache());
You've already written your headers. I don't think you can add more after you've done that, so just put your headers in your first object.