mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-06 20:41:17 +01:00
Merge pull request #5431 from NodeBB/ajaxify-cache-buster
Ajaxify improvements, `/assets/uploads/` fixes, cache buster improvements
This commit is contained in:
@@ -249,48 +249,37 @@ $(document).ready(function () {
|
||||
$(window).trigger('action:script.load', data);
|
||||
|
||||
// Require and parse modules
|
||||
var outstanding = 0;
|
||||
var onReady = function () {
|
||||
if (outstanding) {
|
||||
return setTimeout(onReady, 100);
|
||||
}
|
||||
var outstanding = data.scripts.length;
|
||||
|
||||
data.scripts = data.scripts.filter(Boolean);
|
||||
data.scripts.forEach(function (functionRef) {
|
||||
functionRef();
|
||||
data.scripts.map(function (script) {
|
||||
if (typeof script === 'function') {
|
||||
return function (next) {
|
||||
script();
|
||||
next();
|
||||
};
|
||||
}
|
||||
if (typeof script === 'string') {
|
||||
return function (next) {
|
||||
require([script], function (script) {
|
||||
if (script && script.init) {
|
||||
script.init();
|
||||
}
|
||||
next();
|
||||
}, function () {
|
||||
// ignore 404 error
|
||||
next();
|
||||
});
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}).filter(Boolean).forEach(function (fn) {
|
||||
fn(function () {
|
||||
outstanding -= 1;
|
||||
if (outstanding === 0) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
|
||||
callback();
|
||||
};
|
||||
|
||||
data.scripts.forEach(function (script, idx) {
|
||||
switch (typeof script) {
|
||||
case 'string':
|
||||
++outstanding;
|
||||
(function (idx) {
|
||||
require([script], function (script) {
|
||||
if (script && script.init) {
|
||||
data.scripts[idx] = script.init;
|
||||
} else {
|
||||
data.scripts[idx] = null;
|
||||
}
|
||||
--outstanding;
|
||||
});
|
||||
}(idx));
|
||||
break;
|
||||
|
||||
case 'function':
|
||||
// No changes needed
|
||||
break;
|
||||
|
||||
default:
|
||||
// Neither? No comprende
|
||||
data.scripts[idx] = undefined;
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
onReady();
|
||||
};
|
||||
|
||||
ajaxify.loadData = function (url, callback) {
|
||||
|
||||
@@ -365,7 +365,7 @@ Controllers.handle404 = function (req, res) {
|
||||
|
||||
if (isClientScript.test(req.url)) {
|
||||
res.type('text/javascript').status(200).send('');
|
||||
} else if (req.path.startsWith(relativePath + '/uploads') || (req.get('accept') && req.get('accept').indexOf('text/html') === -1) || req.path === '/favicon.ico') {
|
||||
} else if (req.path.startsWith(relativePath + '/assets/uploads') || (req.get('accept') && req.get('accept').indexOf('text/html') === -1) || req.path === '/favicon.ico') {
|
||||
meta.errors.log404(req.path || '');
|
||||
res.sendStatus(404);
|
||||
} else if (req.accepts('html')) {
|
||||
|
||||
@@ -32,15 +32,15 @@ exports.read = function read(callback) {
|
||||
fs.readFile(filePath, function (err, buffer) {
|
||||
if (err) {
|
||||
winston.warn('[cache-buster] could not read cache buster: ' + err.message);
|
||||
return callback();
|
||||
return callback(null, generate());
|
||||
}
|
||||
|
||||
buffer = buffer.toString();
|
||||
if (buffer) {
|
||||
cached = buffer;
|
||||
return callback(null, cached);
|
||||
if (!buffer || buffer.toString().length !== 11) {
|
||||
winston.warn('[cache-buster] cache buster string invalid: expected /[a-z0-9]{11}/, got `' + buffer + '`');
|
||||
return callback(null, generate());
|
||||
}
|
||||
|
||||
callback();
|
||||
cached = buffer.toString();
|
||||
callback(null, cached);
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user