A Node.js module that recursively scans the directories and files of an Nginx cache as efficiently as possible looking for partial URL key matches based on a regular expression.
This is based on and forked from lovell/nginx-cache with some updates for newer nodejs versions.
npm install @quickfire/qf-nginx-cache
Purge all CSS files from an Nginx cache:
const NginxCache = require('@quickfire/qf-nginx-cache');
NginxCache('/var/www/cache')
.find(/.css$/)
.on('match', function(file, url) {
console.log('Attempting to remove cached version of ' + url);
fs.unlink(file, function(err) {
if (err) {
console.log(err.message);
}
});
})
.on('error', function(err) {
console.log(err.message);
})
.on('finish', function() {
console.log('Done');
});
Constructor to which further methods are chained.
directory
is the path to the Nginx cache, as provided to itsproxy_cache_path
directive.
pattern
is an instance of a standard JavaScriptRegExp
object.
Register a function to listen for the given event, where:
event
is a String containing the name of the event (see below), andlistener
is a function to call when the event is emitted.
The match
event is emitted when a cache file matching the pattern
passed to find()
is found.
The event attributes are file, url
where:
file
is the full path to the matching cache file, andurl
is the full cache key that matched the pattern.
The finish
event is emitted when all cache directories and files have been scanned.
No further events are emitted after this.
The error
event is emitted when a non-ignorable problem occurs,
e.g. lack of permission to read files in the cache directory.
The warn
event is emitted when an ignorable problem occurs,
e.g. the Nginx cache manager deleted a file.
If you know the complete, original cache key then the commercial Plus version of Nginx provides a proxy_cache_purge directive, which may be more suitable.
Copyright 2015, 2017 Dispatches LLP.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.