diff --git a/docs/throttling.md b/docs/throttling.md index 104f7df35809..a09033894751 100644 --- a/docs/throttling.md +++ b/docs/throttling.md @@ -1,13 +1,13 @@ -## The 3G network throttling preset +## The mobile network throttling preset -This is the standard recommendation for 3G throttling: +This is the standard recommendation for mobile throttling: - Latency: 150ms - Throughput: 1.6Mbps down / 750 Kbps up. - Packet loss: none. -These exact figures are used as the [WebPageTest "Mobile 3G - Fast" preset](https://github.com/WPO-Foundation/webpagetest/blob/master/www/settings/connectivity.ini.sample) and [Lighthouse's throttling default](https://github.com/GoogleChrome/lighthouse/blob/8f500e00243e07ef0a80b39334bedcc8ddc8d3d0/lighthouse-core/config/constants.js#L19-L26). +These exact figures are used as [Lighthouse's throttling default](https://github.com/GoogleChrome/lighthouse/blob/8f500e00243e07ef0a80b39334bedcc8ddc8d3d0/lighthouse-core/config/constants.js#L19-L26) and represent roughly the bottom 25% of 4G connections and top 25% of 3G connections. They are identical to the [WebPageTest "Mobile 3G - Fast" preset](https://github.com/WPO-Foundation/webpagetest/blob/master/www/settings/connectivity.ini.sample) and, due to a lower latency, slightly faster for some pages than the [WebPageTest "4G" preset](https://github.com/WPO-Foundation/webpagetest/blob/master/www/settings/connectivity.ini.sample). ## Throttling basics diff --git a/lighthouse-core/audits/load-fast-enough-for-pwa.js b/lighthouse-core/audits/load-fast-enough-for-pwa.js index 62673c8541cc..81356534e7b6 100644 --- a/lighthouse-core/audits/load-fast-enough-for-pwa.js +++ b/lighthouse-core/audits/load-fast-enough-for-pwa.js @@ -13,7 +13,7 @@ const isDeepEqual = require('lodash.isequal'); const Audit = require('./audit'); -const mobile3GThrottling = require('../config/constants').throttling.mobile3G; +const mobileThrottling = require('../config/constants').throttling.mobileSlow4G; // Maximum TTI to be considered "fast" for PWA baseline checklist // https://developers.google.com/web/progressive-web-apps/checklist @@ -26,10 +26,10 @@ class LoadFastEnough4Pwa extends Audit { static get meta() { return { id: 'load-fast-enough-for-pwa', - title: 'Page load is fast enough on 3G', - failureTitle: 'Page load is not fast enough on 3G', + title: 'Page load is fast enough on mobile networks', + failureTitle: 'Page load is not fast enough on mobile networks', description: - 'A fast page load over a 3G network ensures a good mobile user experience. ' + + 'A fast page load over a cellular network ensures a good mobile user experience. ' + '[Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g).', requiredArtifacts: ['traces', 'devtoolsLogs'], }; @@ -44,12 +44,12 @@ class LoadFastEnough4Pwa extends Audit { const trace = artifacts.traces[Audit.DEFAULT_PASS]; const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS]; - // If throttling was default devtools or lantern 3G throttling, then reuse the given settings - // Otherwise, we'll force the usage of lantern 3G. - const settingOverrides = {throttlingMethod: 'simulate', throttling: mobile3GThrottling}; + // If throttling was default devtools or lantern slow 4G throttling, then reuse the given settings + // Otherwise, we'll force the usage of lantern slow 4G. + const settingOverrides = {throttlingMethod: 'simulate', throttling: mobileThrottling}; const settings = context.settings.throttlingMethod !== 'provided' && - isDeepEqual(context.settings.throttling, mobile3GThrottling) + isDeepEqual(context.settings.throttling, mobileThrottling) ? context.settings : Object.assign({}, context.settings, settingOverrides); diff --git a/lighthouse-core/audits/predictive-perf.js b/lighthouse-core/audits/predictive-perf.js index ed40192cfca5..129401f6e054 100644 --- a/lighthouse-core/audits/predictive-perf.js +++ b/lighthouse-core/audits/predictive-perf.js @@ -23,7 +23,7 @@ class PredictivePerf extends Audit { title: 'Predicted Performance (beta)', description: 'Predicted performance evaluates how your site will perform under ' + - 'a 3G connection on a mobile device.', + 'a cellular connection on a mobile device.', scoreDisplayMode: Audit.SCORING_MODES.NUMERIC, requiredArtifacts: ['traces', 'devtoolsLogs'], }; diff --git a/lighthouse-core/config/constants.js b/lighthouse-core/config/constants.js index 5e2ec4cb4e47..0fcfdc60ba9e 100644 --- a/lighthouse-core/config/constants.js +++ b/lighthouse-core/config/constants.js @@ -16,7 +16,7 @@ const DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR = 0.9; const throttling = { DEVTOOLS_RTT_ADJUSTMENT_FACTOR, DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR, - mobile3G: { + mobileSlow4G: { rttMs: 150, throughputKbps: 1.6 * 1024, requestLatencyMs: 150 * DEVTOOLS_RTT_ADJUSTMENT_FACTOR, @@ -31,7 +31,7 @@ const defaultSettings = { output: 'json', maxWaitForLoad: 45 * 1000, throttlingMethod: 'simulate', - throttling: throttling.mobile3G, + throttling: throttling.mobileSlow4G, auditMode: false, gatherMode: false, disableStorageReset: false, diff --git a/lighthouse-core/lib/dependency-graph/simulator/simulator.js b/lighthouse-core/lib/dependency-graph/simulator/simulator.js index 18ed0f2d7161..889d8ee0f33a 100644 --- a/lighthouse-core/lib/dependency-graph/simulator/simulator.js +++ b/lighthouse-core/lib/dependency-graph/simulator/simulator.js @@ -9,7 +9,7 @@ const BaseNode = require('../base-node'); const TcpConnection = require('./tcp-connection'); const ConnectionPool = require('./connection-pool'); const DNSCache = require('./dns-cache'); -const mobile3G = require('../../../config/constants').throttling.mobile3G; +const mobileSlow4G = require('../../../config/constants').throttling.mobileSlow4G; /** @typedef {BaseNode.Node} Node */ /** @typedef {import('../network-node')} NetworkNode */ @@ -40,10 +40,10 @@ class Simulator { /** @type {Required} */ this._options = Object.assign( { - rtt: mobile3G.rttMs, - throughput: mobile3G.throughputKbps * 1024, + rtt: mobileSlow4G.rttMs, + throughput: mobileSlow4G.throughputKbps * 1024, maximumConcurrentRequests: DEFAULT_MAXIMUM_CONCURRENT_REQUESTS, - cpuSlowdownMultiplier: mobile3G.cpuSlowdownMultiplier, + cpuSlowdownMultiplier: mobileSlow4G.cpuSlowdownMultiplier, layoutTaskMultiplier: DEFAULT_LAYOUT_TASK_MULTIPLIER, additionalRttByOrigin: new Map(), serverResponseTimeByOrigin: new Map(), diff --git a/lighthouse-core/lib/i18n/en-US.json b/lighthouse-core/lib/i18n/en-US.json index 00f04fd28570..6b3f5e728665 100644 --- a/lighthouse-core/lib/i18n/en-US.json +++ b/lighthouse-core/lib/i18n/en-US.json @@ -448,8 +448,8 @@ "description": "Title of the lab data section of the Performance category. Within this section are various speed metrics which quantify the pageload performance into values presented in seconds and milliseconds. \"Lab\" is an abbreviated form of \"laboratory\", and refers to the fact that the data is from a controlled test of a website, not measurements from real users visiting that site." }, "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": { - "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on emulated 3G. Values are estimated and may vary.", - "description": "Explanation shown to users below performance results to inform them that the test was done with a 3G network connection and to warn them that the numbers they see will likely change slightly the next time they run Lighthouse. 'Lighthouse' becomes link text to additional documentation." + "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.", + "description": "Explanation shown to users below performance results to inform them that the test was done with a 4G network connection and to warn them that the numbers they see will likely change slightly the next time they run Lighthouse. 'Lighthouse' becomes link text to additional documentation." }, "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": { "message": "Additional items to manually check", diff --git a/lighthouse-core/report/html/renderer/util.js b/lighthouse-core/report/html/renderer/util.js index 2b1996a1da82..875a89f6632d 100644 --- a/lighthouse-core/report/html/renderer/util.js +++ b/lighthouse-core/report/html/renderer/util.js @@ -398,7 +398,7 @@ class Util { networkThrottling = `${Util.formatNumber(requestLatencyMs)}${NBSP}ms HTTP RTT, ` + `${Util.formatNumber(throttling.downloadThroughputKbps)}${NBSP}Kbps down, ` + `${Util.formatNumber(throttling.uploadThroughputKbps)}${NBSP}Kbps up (DevTools)`; - summary = 'Throttled Fast 3G network'; + summary = 'Throttled Slow 4G network'; break; } case 'simulate': { @@ -406,7 +406,7 @@ class Util { cpuThrottling = `${Util.formatNumber(cpuSlowdownMultiplier)}x slowdown (Simulated)`; networkThrottling = `${Util.formatNumber(rttMs)}${NBSP}ms TCP RTT, ` + `${Util.formatNumber(throughputKbps)}${NBSP}Kbps throughput (Simulated)`; - summary = 'Simulated Fast 3G network'; + summary = 'Simulated Slow 4G network'; break; } default: @@ -484,8 +484,8 @@ Util.UIStrings = { /** Label of value shown in the summary of critical request chains. Refers to the total amount of time (milliseconds) of the longest critical path chain/sequence of network requests. Example value: 2310 ms */ crcLongestDurationLabel: 'Maximum critical path latency:', - /** Explanation shown to users below performance results to inform them that the test was done with a 3G network connection and to warn them that the numbers they see will likely change slightly the next time they run Lighthouse. 'Lighthouse' becomes link text to additional documentation. */ - lsPerformanceCategoryDescription: '[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on emulated 3G. Values are estimated and may vary.', + /** Explanation shown to users below performance results to inform them that the test was done with a 4G network connection and to warn them that the numbers they see will likely change slightly the next time they run Lighthouse. 'Lighthouse' becomes link text to additional documentation. */ + lsPerformanceCategoryDescription: '[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.', /** Title of the lab data section of the Performance category. Within this section are various speed metrics which quantify the pageload performance into values presented in seconds and milliseconds. "Lab" is an abbreviated form of "laboratory", and refers to the fact that the data is from a controlled test of a website, not measurements from real users visiting that site. */ labDataTitle: 'Lab Data', }; diff --git a/lighthouse-core/test/audits/byte-efficiency/render-blocking-resources-test.js b/lighthouse-core/test/audits/byte-efficiency/render-blocking-resources-test.js index e1a71999a033..1518e7f46211 100644 --- a/lighthouse-core/test/audits/byte-efficiency/render-blocking-resources-test.js +++ b/lighthouse-core/test/audits/byte-efficiency/render-blocking-resources-test.js @@ -7,7 +7,7 @@ const RenderBlockingResourcesAudit = require('../../../audits/byte-efficiency/render-blocking-resources.js'); // eslint-disable-line max-len -const mobile3G = require('../../../config/constants').throttling.mobile3G; +const mobileSlow4G = require('../../../config/constants').throttling.mobileSlow4G; const Runner = require('../../../runner'); const NetworkNode = require('../../../lib/dependency-graph/network-node'); const CPUNode = require('../../../lib/dependency-graph/cpu-node'); @@ -36,7 +36,7 @@ describe('Render blocking resources audit', () => { Runner.instantiateComputedArtifacts() ); - const settings = {throttlingMethod: 'simulate', throttling: mobile3G}; + const settings = {throttlingMethod: 'simulate', throttling: mobileSlow4G}; const result = await RenderBlockingResourcesAudit.audit(artifacts, {settings}); assert.equal(result.score, 1); assert.equal(result.rawValue, 0); diff --git a/lighthouse-core/test/audits/load-fast-enough-for-pwa-test.js b/lighthouse-core/test/audits/load-fast-enough-for-pwa-test.js index 283f9bccf45e..9f0f3abd21b2 100644 --- a/lighthouse-core/test/audits/load-fast-enough-for-pwa-test.js +++ b/lighthouse-core/test/audits/load-fast-enough-for-pwa-test.js @@ -8,7 +8,7 @@ const FastPWAAudit = require('../../audits/load-fast-enough-for-pwa'); const Runner = require('../../runner.js'); const Audit = require('../../audits/audit.js'); -const mobile3GThrottling = require('../../config/constants').throttling.mobile3G; +const mobileSlow4GThrottling = require('../../config/constants').throttling.mobileSlow4G; const assert = require('assert'); const trace = require('../fixtures/traces/progressive-app-m60.json'); @@ -31,7 +31,7 @@ function generateArtifacts(ttiValue) { /* eslint-env jest */ describe('PWA: load-fast-enough-for-pwa audit', () => { it('returns boolean based on TTI value', () => { - const settings = {throttlingMethod: 'devtools', throttling: mobile3GThrottling}; + const settings = {throttlingMethod: 'devtools', throttling: mobileSlow4GThrottling}; return FastPWAAudit.audit(generateArtifacts(5000), {settings}).then(result => { assert.equal(result.score, true, 'fixture trace is not passing audit'); assert.equal(result.rawValue, 5000); @@ -39,7 +39,7 @@ describe('PWA: load-fast-enough-for-pwa audit', () => { }); it('fails a bad TTI value', () => { - const settings = {throttlingMethod: 'devtools', throttling: mobile3GThrottling}; + const settings = {throttlingMethod: 'devtools', throttling: mobileSlow4GThrottling}; return FastPWAAudit.audit(generateArtifacts(15000), {settings}).then(result => { assert.equal(result.score, false, 'not failing a long TTI value'); assert.equal(result.rawValue, 15000); @@ -54,7 +54,7 @@ describe('PWA: load-fast-enough-for-pwa audit', () => { devtoolsLogs: {defaultPass: devtoolsLog}, }, Runner.instantiateComputedArtifacts()); - const settings = {throttlingMethod: 'devtools', throttling: mobile3GThrottling}; + const settings = {throttlingMethod: 'devtools', throttling: mobileSlow4GThrottling}; const result = await FastPWAAudit.audit(artifacts, {settings}); assert.equal(Math.round(result.rawValue), 1582); }); diff --git a/lighthouse-core/test/results/sample_v2.json b/lighthouse-core/test/results/sample_v2.json index 7451b200a3b7..01f3bf011b31 100644 --- a/lighthouse-core/test/results/sample_v2.json +++ b/lighthouse-core/test/results/sample_v2.json @@ -101,8 +101,8 @@ }, "load-fast-enough-for-pwa": { "id": "load-fast-enough-for-pwa", - "title": "Page load is fast enough on 3G", - "description": "A fast page load over a 3G network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g).", + "title": "Page load is fast enough on mobile networks", + "description": "A fast page load over a cellular network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g).", "score": 1, "scoreDisplayMode": "binary", "rawValue": 4927.278 @@ -3448,7 +3448,7 @@ "errorLabel": "Error!", "errorMissingAuditInfo": "Report error: no audit information", "labDataTitle": "Lab Data", - "lsPerformanceCategoryDescription": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on emulated 3G. Values are estimated and may vary.", + "lsPerformanceCategoryDescription": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.", "manualAuditsGroupTitle": "Additional items to manually check", "notApplicableAuditsGroupTitle": "Not applicable", "opportunityResourceColumnLabel": "Opportunity", diff --git a/readme.md b/readme.md index c738e1b90472..0c7532d76f0d 100644 --- a/readme.md +++ b/readme.md @@ -304,7 +304,7 @@ Yes! Details in [Lighthouse configuration](./docs/configuration.md). ### How does Lighthouse use network throttling, and how can I make it better? Good question. Network and CPU throttling are applied by default in a Lighthouse run. The network -attempts to emulate 3G and the CPU is slowed down 4x from your machine's default speed. If you +attempts to emulate slow 4G and the CPU is slowed down 4x from your machine's default speed. If you prefer to run Lighthouse without throttling, you'll have to use the CLI and disable it with the `--throttling.*` flags mentioned above. @@ -338,4 +338,4 @@ See [Contributing](./CONTRIBUTING.md) to get started.
Lighthouse, ˈlītˌhous (n): a tower or other structure tool containing a beacon light to warn or guide ships at sea developers. -

\ No newline at end of file +