Skip to content

Commit

Permalink
switch to still using resourceSize
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickhulce committed Oct 18, 2017
1 parent ba76c85 commit 11d32f0
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,23 @@ class ResponsesAreCompressed extends ByteEfficiencyAudit {

const results = [];
uncompressedResponses.forEach(record => {
const originalSize = record.transferSize;
const originalSize = record.resourceSize;
const gzipSize = record.gzipSize;
const gzipSavings = originalSize - gzipSize;

// we require at least 10% savings off the original size AND at least 1400 bytes
// if the savings is smaller than either, we don't care
if (1 - gzipSize / originalSize < IGNORE_THRESHOLD_IN_PERCENT ||
gzipSavings < IGNORE_THRESHOLD_IN_BYTES
gzipSavings < IGNORE_THRESHOLD_IN_BYTES ||
record.transferSize < gzipSize
) {
return;
}

// remove duplicates
const url = URL.elideDataURI(record.url);
const isDuplicate = results.find(res => res.url === url &&
res.totalBytes === record.transferSize);
res.totalBytes === record.resourceSize);
if (isDuplicate) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const CHROME_EXTENSION_PROTOCOL = 'chrome-extension:';
class ResponseCompression extends Gatherer {
/**
* @param {!NetworkRecords} networkRecords
* @return {!Array<{url: string, isBase64DataUri: boolean, mimeType: string, transferSize: number}>}
* @return {!Array<{url: string, isBase64DataUri: boolean, mimeType: string, resourceSize: number}>}
*/
static filterUnoptimizedResponses(networkRecords) {
const unoptimizedResponses = [];
Expand All @@ -28,8 +28,8 @@ class ResponseCompression extends Gatherer {
const isTextBasedResource = record.resourceType() && record.resourceType().isTextType();
const isChromeExtensionResource = record.url.startsWith(CHROME_EXTENSION_PROTOCOL);

if (!isTextBasedResource || !record.transferSize || !record.finished ||
isChromeExtensionResource || record.statusCode === 304) {
if (!isTextBasedResource || !record.resourceSize || !record.finished ||
isChromeExtensionResource || !record.transferSize || record.statusCode === 304) {
return;
}

Expand All @@ -44,6 +44,7 @@ class ResponseCompression extends Gatherer {
url: record.url,
mimeType: record.mimeType,
transferSize: record.transferSize,
resourceSize: record.resourceSize,
});
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
*/
'use strict';

const KB_BYTES = 1024;
const KB = 1024;
const ResponsesAreCompressedAudit =
require('../../../audits/byte-efficiency/uses-response-compression.js');
const assert = require('assert');

function generateResponse(filename, mimeType, transferSize, gzipSize) {
return {
url: `http://google.com/${filename}`,
mimeType,
transferSize,
gzipSize,
};
function generateResponse(options) {
return Object.assign({
url: `http://google.com/${options.file}`,
transferSize: options.resourceSize || 0,
resourceSize: 0,
gzipSize: 0,
}, options);
}

/* eslint-env mocha */
Expand All @@ -25,9 +25,9 @@ describe('Page uses optimized responses', () => {
it('fails when responses are collectively unoptimized', () => {
const auditResult = ResponsesAreCompressedAudit.audit_({
ResponseCompression: [
generateResponse('index.js', 'text/javascript', 100 * KB_BYTES, 90 * KB_BYTES), // 10kb & 10%
generateResponse('index.css', 'text/css', 50 * KB_BYTES, 37 * KB_BYTES), // 13kb & 26% (hit)
generateResponse('index.json', 'application/json', 2048 * KB_BYTES, 1024 * KB_BYTES), // 1024kb & 50% (hit)
generateResponse({file: 'index.js', resourceSize: 100 * KB, gzipSize: 90 * KB}), // 10kb & 10%
generateResponse({file: 'index.css', resourceSize: 50 * KB, gzipSize: 37 * KB}), // 13kb & 26% (hit)
generateResponse({file: 'index.json', resourceSize: 2048 * KB, gzipSize: 1024 * KB}), // 1024kb & 50% (hit)
],
});

Expand All @@ -37,9 +37,11 @@ describe('Page uses optimized responses', () => {
it('passes when all responses are sufficiently optimized', () => {
const auditResult = ResponsesAreCompressedAudit.audit_({
ResponseCompression: [
generateResponse('index.js', 'text/javascript', 1000 * KB_BYTES, 910 * KB_BYTES), // 90kb & 9%
generateResponse('index.css', 'text/css', 6 * KB_BYTES, 4.5 * KB_BYTES), // 1,5kb & 25% (hit)
generateResponse('index.json', 'application/json', 10 * KB_BYTES, 10 * KB_BYTES), // 0kb & 0%
generateResponse({file: 'index.js', resourceSize: 1000 * KB, gzipSize: 910 * KB}), // 90kb & 9%
generateResponse({file: 'index.css', resourceSize: 6 * KB, gzipSize: 4.5 * KB}), // 1,5kb & 25% (hit)
generateResponse({file: 'index.json', resourceSize: 10 * KB, gzipSize: 10 * KB}), // 0kb & 0%
generateResponse({file: 'compressed.json', resourceSize: 10 * KB, transferSize: 3 * KB,
gzipSize: 6 * KB}), // 0kb & 0%
],
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ const traceData = {
_statusCode: 200,
_mimeType: 'text/javascript',
_requestId: 0,
_transferSize: 9,
_resourceSize: 9,
_transferSize: 10,
_resourceType: {
_isTextType: true,
},
Expand All @@ -37,7 +38,8 @@ const traceData = {
_statusCode: 200,
_mimeType: 'text/css',
_requestId: 1,
_transferSize: 6,
_resourceSize: 6,
_transferSize: 7,
_resourceType: {
_isTextType: true,
},
Expand All @@ -50,7 +52,8 @@ const traceData = {
_statusCode: 200,
_mimeType: 'application/json',
_requestId: 2,
_transferSize: 7,
_resourceSize: 7,
_transferSize: 8,
_resourceType: {
_isTextType: true,
},
Expand All @@ -63,6 +66,7 @@ const traceData = {
_statusCode: 304, // ignore for being a cache not modified response
_mimeType: 'application/json',
_requestId: 2,
_resourceSize: 7,
_transferSize: 7,
_resourceType: {
_isTextType: true,
Expand All @@ -76,7 +80,8 @@ const traceData = {
_statusCode: 200,
_mimeType: 'application/json',
_requestId: 2,
_transferSize: 7,
_resourceSize: 7,
_transferSize: 8,
_resourceType: {
_isTextType: true,
},
Expand All @@ -89,6 +94,7 @@ const traceData = {
_statusCode: 200,
_mimeType: 'images/jpg',
_requestId: 3,
_resourceSize: 10,
_transferSize: 10,
_resourceType: {
_isTextType: false,
Expand Down Expand Up @@ -129,7 +135,7 @@ describe('Optimized responses', () => {
return responseCompression.afterPass(options, createNetworkRequests(traceData))
.then(artifact => {
assert.equal(artifact.length, 2);
assert.equal(artifact[0].transferSize, 6);
assert.equal(artifact[0].resourceSize, 6);
assert.equal(artifact[0].gzipSize, 26);
});
});
Expand All @@ -141,6 +147,7 @@ describe('Optimized responses', () => {
_url: 'chrome-extension://index.css',
_mimeType: 'text/css',
_requestId: 1,
_resourceSize: 10,
_transferSize: 10,
_resourceType: {
_isTextType: true,
Expand All @@ -153,6 +160,7 @@ describe('Optimized responses', () => {
_url: 'http://google.com/chrome-extension.css',
_mimeType: 'text/css',
_requestId: 1,
_resourceSize: 123,
_transferSize: 123,
_resourceType: {
_isTextType: true,
Expand All @@ -167,7 +175,7 @@ describe('Optimized responses', () => {
return responseCompression.afterPass(options, createNetworkRequests(traceData))
.then(artifact => {
assert.equal(artifact.length, 1);
assert.equal(artifact[0].transferSize, 123);
assert.equal(artifact[0].resourceSize, 123);
});
});

Expand All @@ -177,6 +185,7 @@ describe('Optimized responses', () => {
record.url = record._url;
record.statusCode = record._statusCode;
record.mimeType = record._mimeType;
record.resourceSize = record._resourceSize;
record.transferSize = record._transferSize;
record.responseHeaders = record._responseHeaders;
record.requestId = record._requestId;
Expand Down

0 comments on commit 11d32f0

Please sign in to comment.