New rule called "Empty requests" (#180)

This commit is contained in:
Gaël Métais
2016-07-11 15:46:00 +08:00
committed by GitHub
parent fe8466b0e3
commit eedb46e000
14 changed files with 99 additions and 64 deletions
@@ -5,7 +5,7 @@
*/
var debug = require('debug')('ylt:weightChecker');
var debug = require('debug')('ylt:redownload');
var Q = require('q');
var http = require('http');
var zlib = require('zlib');
@@ -18,7 +18,7 @@ var gzipCompressor = require('./gzipCompressor');
var contentTypeChecker = require('./contentTypeChecker');
var WeightChecker = function() {
var Redownload = function() {
var MAX_PARALLEL_DOWNLOADS = 10;
var REQUEST_TIMEOUT = 15000; // 15 seconds
@@ -86,9 +86,10 @@ var WeightChecker = function() {
offenders.totalRequests = listRequestsByType(results);
metrics.totalRequests = offenders.totalRequests.total;
// Remove unwanted requests (redirections, about:blank)
// Remove unwanted responses (redownload failed, about:blank)
results = results.filter(function(result) {
return (result !== null && result.weightCheck && result.weightCheck.bodySize > 0);
return (result !== null && result.weightCheck && result.url.indexOf('about:blank') !== 0);
});
@@ -100,6 +101,17 @@ var WeightChecker = function() {
offenders.totalWeight = listRequestWeight(results);
metrics.totalWeight = offenders.totalWeight.totalWeight;
// Empty files
offenders.emptyRequests = listEmptyRequests(results);
metrics.emptyRequests = offenders.emptyRequests.length;
// Now emove unwanted responses (redirections)
results = results.filter(function(result) {
return (result.status < 300 || result.status >= 400);
});
// Image compression
offenders.imageOptimization = listImageNotOptimized(results);
metrics.imageOptimization = offenders.imageOptimization.totalGain;
@@ -116,7 +128,7 @@ var WeightChecker = function() {
offenders.smallRequests = listSmallRequests(results);
metrics.smallRequests = offenders.smallRequests.total;
data.toolsResults.weightChecker = {
data.toolsResults.redownload = {
metrics: metrics,
offenders: offenders
};
@@ -144,6 +156,20 @@ var WeightChecker = function() {
return results;
}
function listEmptyRequests(requests) {
var results = [];
requests.forEach(function(req) {
var weight = req.weightCheck.bodySize || req.contentLength;
if (weight === 0 && req.method === 'GET' && req.status === 200) {
results.push(req.url);
}
});
return results;
}
function listRequestWeight(requests) {
var results = {
totalWeight: 0,
@@ -555,4 +581,4 @@ var WeightChecker = function() {
};
};
module.exports = new WeightChecker();
module.exports = new Redownload();