I have read that to avoid caching in Node.js, 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 the Cache-Control header) 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?
Implement caching with following approach: On API request, check if the cache has key already set using has(key) function. If the cache has the key, retrieve the cached value by get(key) function and use it instead of performing operation again. (This saves time)
Similar to the previous example using node-cache , the data to be cached will be retrieved from an API.
To disable caching, use -c-1 (and possibly -p 8080 to force the server to clear the cache for that port; can be removed on subsequent runs).
Make use of a middleware to add no-cache
headers. Use this middleware where-ever you intend to turn caching off.
function nocache(req, res, next) { res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate'); res.header('Expires', '-1'); res.header('Pragma', 'no-cache'); next(); }
Use the middleware in your routes definition:
app.get('/getfile', nocache, sendContent); function sendContent(req, res) { var localPath = 'some-file'; var mimeType = ''; fs.readFile(localPath, 'utf8', function (err, contents) { if (!err && contents) { res.header('Content-Type', mimeType); res.header('Content-Length', contents.length); res.end(contents); } else { res.writeHead(500); res.end(); } }); }
Let me know if this works for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With