lighthouse 12.3.0-dev.20250121 → 12.3.0-dev.20250123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/test/smokehouse/core-tests.js +4 -0
- package/core/audits/clickjacking-mitigation.d.ts +42 -0
- package/core/audits/clickjacking-mitigation.js +139 -0
- package/core/config/default-config.js +2 -0
- package/package.json +4 -4
- package/shared/localization/locales/ar-XB.json +26 -2
- package/shared/localization/locales/ar.json +26 -2
- package/shared/localization/locales/bg.json +26 -2
- package/shared/localization/locales/ca.json +26 -2
- package/shared/localization/locales/cs.json +26 -2
- package/shared/localization/locales/da.json +26 -2
- package/shared/localization/locales/de.json +26 -2
- package/shared/localization/locales/el.json +26 -2
- package/shared/localization/locales/en-GB.json +26 -2
- package/shared/localization/locales/en-US.json +32 -2
- package/shared/localization/locales/en-XL.json +32 -2
- package/shared/localization/locales/es-419.json +26 -2
- package/shared/localization/locales/es.json +26 -2
- package/shared/localization/locales/fi.json +26 -2
- package/shared/localization/locales/fil.json +26 -2
- package/shared/localization/locales/fr.json +26 -2
- package/shared/localization/locales/he.json +26 -2
- package/shared/localization/locales/hi.json +26 -2
- package/shared/localization/locales/hr.json +26 -2
- package/shared/localization/locales/hu.json +26 -2
- package/shared/localization/locales/id.json +26 -2
- package/shared/localization/locales/it.json +26 -2
- package/shared/localization/locales/ja.json +26 -2
- package/shared/localization/locales/ko.json +26 -2
- package/shared/localization/locales/lt.json +26 -2
- package/shared/localization/locales/lv.json +26 -2
- package/shared/localization/locales/nl.json +26 -2
- package/shared/localization/locales/no.json +26 -2
- package/shared/localization/locales/pl.json +26 -2
- package/shared/localization/locales/pt-PT.json +26 -2
- package/shared/localization/locales/pt.json +26 -2
- package/shared/localization/locales/ro.json +26 -2
- package/shared/localization/locales/ru.json +26 -2
- package/shared/localization/locales/sk.json +26 -2
- package/shared/localization/locales/sl.json +26 -2
- package/shared/localization/locales/sr-Latn.json +26 -2
- package/shared/localization/locales/sr.json +26 -2
- package/shared/localization/locales/sv.json +26 -2
- package/shared/localization/locales/ta.json +26 -2
- package/shared/localization/locales/te.json +26 -2
- package/shared/localization/locales/th.json +26 -2
- package/shared/localization/locales/tr.json +26 -2
- package/shared/localization/locales/uk.json +26 -2
- package/shared/localization/locales/vi.json +26 -2
- package/shared/localization/locales/zh-HK.json +26 -2
- package/shared/localization/locales/zh-TW.json +26 -2
- package/shared/localization/locales/zh.json +26 -2
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import a11y from './test-definitions/a11y.js';
|
|
8
8
|
import byteEfficiency from './test-definitions/byte-efficiency.js';
|
|
9
9
|
import byteGzip from './test-definitions/byte-gzip.js';
|
|
10
|
+
import clickjackingMissingHeaders from './test-definitions/clickjacking-missing-headers.js';
|
|
11
|
+
import clickjackingMitigationPresent from './test-definitions/clickjacking-mitigation-headers-present.js';
|
|
10
12
|
import crash from './test-definitions/crash.js';
|
|
11
13
|
import cspAllowAll from './test-definitions/csp-allow-all.js';
|
|
12
14
|
import cspBlockAll from './test-definitions/csp-block-all.js';
|
|
@@ -69,6 +71,8 @@ const smokeTests = [
|
|
|
69
71
|
a11y,
|
|
70
72
|
byteEfficiency,
|
|
71
73
|
byteGzip,
|
|
74
|
+
clickjackingMissingHeaders,
|
|
75
|
+
clickjackingMitigationPresent,
|
|
72
76
|
crash,
|
|
73
77
|
cspAllowAll,
|
|
74
78
|
cspBlockAll,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export default ClickjackingMitigation;
|
|
2
|
+
declare class ClickjackingMitigation extends Audit {
|
|
3
|
+
/**
|
|
4
|
+
* @param {LH.Artifacts} artifacts
|
|
5
|
+
* @param {LH.Audit.Context} context
|
|
6
|
+
* @return {Promise<{cspHeaders: string[], xfoHeaders: string[]}>}
|
|
7
|
+
*/
|
|
8
|
+
static getRawCspsAndXfo(artifacts: LH.Artifacts, context: LH.Audit.Context): Promise<{
|
|
9
|
+
cspHeaders: string[];
|
|
10
|
+
xfoHeaders: string[];
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* @param {string | undefined} directive
|
|
14
|
+
* @param {LH.IcuMessage | string} findingDescription
|
|
15
|
+
* @param {LH.IcuMessage=} severity
|
|
16
|
+
* @return {LH.Audit.Details.TableItem}
|
|
17
|
+
*/
|
|
18
|
+
static findingToTableItem(directive: string | undefined, findingDescription: LH.IcuMessage | string, severity?: LH.IcuMessage | undefined): LH.Audit.Details.TableItem;
|
|
19
|
+
/**
|
|
20
|
+
* @param {string[]} cspHeaders
|
|
21
|
+
* @param {string[]} xfoHeaders
|
|
22
|
+
* @return {{score: number, results: LH.Audit.Details.TableItem[]}}
|
|
23
|
+
*/
|
|
24
|
+
static constructResults(cspHeaders: string[], xfoHeaders: string[]): {
|
|
25
|
+
score: number;
|
|
26
|
+
results: LH.Audit.Details.TableItem[];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @param {LH.Artifacts} artifacts
|
|
30
|
+
* @param {LH.Audit.Context} context
|
|
31
|
+
* @return {Promise<LH.Audit.Product>}
|
|
32
|
+
*/
|
|
33
|
+
static audit(artifacts: LH.Artifacts, context: LH.Audit.Context): Promise<LH.Audit.Product>;
|
|
34
|
+
}
|
|
35
|
+
export namespace UIStrings {
|
|
36
|
+
let title: string;
|
|
37
|
+
let description: string;
|
|
38
|
+
let noClickjackingMitigation: string;
|
|
39
|
+
let columnSeverity: string;
|
|
40
|
+
}
|
|
41
|
+
import { Audit } from './audit.js';
|
|
42
|
+
//# sourceMappingURL=clickjacking-mitigation.d.ts.map
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2024 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import {Audit} from './audit.js';
|
|
8
|
+
import {MainResource} from '../computed/main-resource.js';
|
|
9
|
+
import * as i18n from '../lib/i18n/i18n.js';
|
|
10
|
+
|
|
11
|
+
const UIStrings = {
|
|
12
|
+
/** Title of a Lighthouse audit that evaluates whether the set CSP or XFO header is mitigating clickjacking attacks. "XFO" stands for "X-Frame-Options" and should not be translated. "CSP" stands for "Content-Security-Policy" and should not be translated. "clickjacking" should not be translated. */
|
|
13
|
+
title: 'Mitigate clickjacking with XFO or CSP',
|
|
14
|
+
/** Description of a Lighthouse audit that evaluates whether the set CSP or XFO header is mitigating clickjacking attacks. This is displayed after a user expands the section to see more. "clickjacking" should not be translated. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. "XFO" stands for "X-Frame-Options" and should not be translated. "CSP" stands for "Content-Security-Policy" and should not be translated. */
|
|
15
|
+
description: 'The `X-Frame-Options` (XFO) header or the `frame-ancestors` directive in the `Content-Security-Policy` (CSP) header control where a page can be embedded. These can mitigate clickjacking attacks by blocking some or all sites from embedding the page. [Learn more about mitigating clickjacking](https://developer.chrome.com/docs/lighthouse/best-practices/clickjacking-mitigation).',
|
|
16
|
+
/** Summary text for the results of a Lighthouse audit that evaluates whether the page is mitigating clickjacking attacks with a frame control policy. This text is displayed if the page does not control how it can be embedded on other pages. */
|
|
17
|
+
noClickjackingMitigation: 'No frame control policy found',
|
|
18
|
+
/** Label for a column in a data table; entries will be the severity of an issue with the page's frame control policy. */
|
|
19
|
+
columnSeverity: 'Severity',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
|
+
|
|
24
|
+
class ClickjackingMitigation extends Audit {
|
|
25
|
+
/**
|
|
26
|
+
* @return {LH.Audit.Meta}
|
|
27
|
+
*/
|
|
28
|
+
static get meta() {
|
|
29
|
+
return {
|
|
30
|
+
id: 'clickjacking-mitigation',
|
|
31
|
+
scoreDisplayMode: Audit.SCORING_MODES.INFORMATIVE,
|
|
32
|
+
title: str_(UIStrings.title),
|
|
33
|
+
description: str_(UIStrings.description),
|
|
34
|
+
requiredArtifacts: ['devtoolsLogs', 'URL'],
|
|
35
|
+
supportedModes: ['navigation'],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @param {LH.Artifacts} artifacts
|
|
41
|
+
* @param {LH.Audit.Context} context
|
|
42
|
+
* @return {Promise<{cspHeaders: string[], xfoHeaders: string[]}>}
|
|
43
|
+
*/
|
|
44
|
+
static async getRawCspsAndXfo(artifacts, context) {
|
|
45
|
+
const devtoolsLog = artifacts.devtoolsLogs[Audit.DEFAULT_PASS];
|
|
46
|
+
const mainResource =
|
|
47
|
+
await MainResource.request({devtoolsLog, URL: artifacts.URL}, context);
|
|
48
|
+
|
|
49
|
+
const cspHeaders = mainResource.responseHeaders
|
|
50
|
+
.filter(h => {
|
|
51
|
+
return h.name.toLowerCase() === 'content-security-policy';
|
|
52
|
+
})
|
|
53
|
+
.flatMap(h => h.value.split(','))
|
|
54
|
+
.filter(rawCsp => rawCsp.replace(/\s/g, ''));
|
|
55
|
+
let xfoHeaders = mainResource.responseHeaders
|
|
56
|
+
.filter(h => {
|
|
57
|
+
return h.name.toLowerCase() === 'x-frame-options';
|
|
58
|
+
})
|
|
59
|
+
.flatMap(h => h.value);
|
|
60
|
+
|
|
61
|
+
// Sanitize the XFO header value.
|
|
62
|
+
xfoHeaders = xfoHeaders.map(v => v.toLowerCase().replace(/\s/g, ''));
|
|
63
|
+
|
|
64
|
+
return {cspHeaders, xfoHeaders};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @param {string | undefined} directive
|
|
69
|
+
* @param {LH.IcuMessage | string} findingDescription
|
|
70
|
+
* @param {LH.IcuMessage=} severity
|
|
71
|
+
* @return {LH.Audit.Details.TableItem}
|
|
72
|
+
*/
|
|
73
|
+
static findingToTableItem(directive, findingDescription, severity) {
|
|
74
|
+
return {
|
|
75
|
+
description: findingDescription,
|
|
76
|
+
severity,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @param {string[]} cspHeaders
|
|
82
|
+
* @param {string[]} xfoHeaders
|
|
83
|
+
* @return {{score: number, results: LH.Audit.Details.TableItem[]}}
|
|
84
|
+
*/
|
|
85
|
+
static constructResults(cspHeaders, xfoHeaders) {
|
|
86
|
+
const allowedDirectives = ['deny', 'sameorigin'];
|
|
87
|
+
|
|
88
|
+
// Check for frame-ancestors in CSP.
|
|
89
|
+
for (const cspHeader of cspHeaders) {
|
|
90
|
+
if (cspHeader.includes('frame-ancestors')) {
|
|
91
|
+
// Pass the audit if frame-ancestors is present.
|
|
92
|
+
return {score: 1, results: []};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
for (const actualDirective of xfoHeaders) {
|
|
97
|
+
if (allowedDirectives.includes(actualDirective)) {
|
|
98
|
+
// DENY or SAMEORIGIN are present.
|
|
99
|
+
return {score: 1, results: []};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
score: 0,
|
|
105
|
+
results: [{
|
|
106
|
+
severity: str_(i18n.UIStrings.itemSeverityHigh),
|
|
107
|
+
description: str_(UIStrings.noClickjackingMitigation),
|
|
108
|
+
}],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @param {LH.Artifacts} artifacts
|
|
114
|
+
* @param {LH.Audit.Context} context
|
|
115
|
+
* @return {Promise<LH.Audit.Product>}
|
|
116
|
+
*/
|
|
117
|
+
static async audit(artifacts, context) {
|
|
118
|
+
const {cspHeaders, xfoHeaders} = await this.getRawCspsAndXfo(artifacts, context);
|
|
119
|
+
const {score, results} = this.constructResults(cspHeaders, xfoHeaders);
|
|
120
|
+
|
|
121
|
+
/** @type {LH.Audit.Details.Table['headings']} */
|
|
122
|
+
const headings = [
|
|
123
|
+
/* eslint-disable max-len */
|
|
124
|
+
{key: 'description', valueType: 'text', subItemsHeading: {key: 'description'}, label: str_(i18n.UIStrings.columnDescription)},
|
|
125
|
+
{key: 'severity', valueType: 'text', subItemsHeading: {key: 'severity'}, label: str_(UIStrings.columnSeverity)},
|
|
126
|
+
/* eslint-enable max-len */
|
|
127
|
+
];
|
|
128
|
+
const details = Audit.makeTableDetails(headings, results);
|
|
129
|
+
|
|
130
|
+
return {
|
|
131
|
+
score,
|
|
132
|
+
notApplicable: !results.length,
|
|
133
|
+
details,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export default ClickjackingMitigation;
|
|
139
|
+
export {UIStrings};
|
|
@@ -194,6 +194,7 @@ const defaultConfig = {
|
|
|
194
194
|
'csp-xss',
|
|
195
195
|
'has-hsts',
|
|
196
196
|
'origin-isolation',
|
|
197
|
+
'clickjacking-mitigation',
|
|
197
198
|
'script-treemap-data',
|
|
198
199
|
'accessibility/accesskeys',
|
|
199
200
|
'accessibility/aria-allowed-attr',
|
|
@@ -545,6 +546,7 @@ const defaultConfig = {
|
|
|
545
546
|
{id: 'csp-xss', weight: 0, group: 'best-practices-trust-safety'},
|
|
546
547
|
{id: 'has-hsts', weight: 0, group: 'best-practices-trust-safety'},
|
|
547
548
|
{id: 'origin-isolation', weight: 0, group: 'best-practices-trust-safety'},
|
|
549
|
+
{id: 'clickjacking-mitigation', weight: 0, group: 'best-practices-trust-safety'},
|
|
548
550
|
// User Experience
|
|
549
551
|
{id: 'paste-preventing-inputs', weight: 3, group: 'best-practices-ux'},
|
|
550
552
|
{id: 'image-aspect-ratio', weight: 1, group: 'best-practices-ux'},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lighthouse",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "12.3.0-dev.
|
|
4
|
+
"version": "12.3.0-dev.20250123",
|
|
5
5
|
"description": "Automated auditing, performance metrics, and best practices for the web.",
|
|
6
6
|
"main": "./core/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"pako": "^2.0.3",
|
|
168
168
|
"preact": "^10.7.2",
|
|
169
169
|
"pretty-json-stringify": "^0.0.2",
|
|
170
|
-
"puppeteer": "^
|
|
170
|
+
"puppeteer": "^24.1.1",
|
|
171
171
|
"resolve": "^1.22.1",
|
|
172
172
|
"rollup": "^2.52.7",
|
|
173
173
|
"rollup-plugin-polyfill-node": "^0.12.0",
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
"webtreemap-cdt": "^3.2.1"
|
|
182
182
|
},
|
|
183
183
|
"dependencies": {
|
|
184
|
-
"@paulirish/trace_engine": "0.0.
|
|
184
|
+
"@paulirish/trace_engine": "0.0.40",
|
|
185
185
|
"@sentry/node": "^7.0.0",
|
|
186
186
|
"axe-core": "^4.10.2",
|
|
187
187
|
"chrome-launcher": "^1.1.2",
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
"metaviewport-parser": "0.3.0",
|
|
201
201
|
"open": "^8.4.0",
|
|
202
202
|
"parse-cache-control": "1.0.1",
|
|
203
|
-
"puppeteer-core": "^
|
|
203
|
+
"puppeteer-core": "^24.1.1",
|
|
204
204
|
"robots-parser": "^3.0.1",
|
|
205
205
|
"semver": "^5.3.0",
|
|
206
206
|
"speedline-core": "^1.4.3",
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "أسباب تغييرات التصميم"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "سيؤدي حجم عناصر DOM الكبير إلى زيادة استخدام الذاكرة وإطالة مدة عمليات احتساب الأنماط وإنتاج عمليات مُكلِفة لإعادة تدفق التنسيقات والتي تؤثر في استجابة الصفحة. [التعرّف على كيفية تجنُّب زيادة حجم عناصر DOM](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)"
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "تحسين حجم عناصر DOM"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "عرض الخط"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "يمكن أن يؤدي تقليل وقت تنزيل الصور إلى تحسين مدّة التحميل المُدرَكة للصفحة، بالإضافة إلى تحسين سرعة عرض أكبر محتوى مرئي. [مزيد من المعلومات حول تحسين حجم الصورة](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "تحسين عرض الصور"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "يمكن أن يؤدي زيادة عامل ضغط الصورة إلى تحسين حجم تنزيلها. (الحجم المقدّر: {PH1})"
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "يمكن تحسين حجم تنزيل هذه الصورة باستخدام تنسيق صور حديث (مثل WebP أو AVIF) أو زيادة ضغط الصورة. (الحجم المقدّر: {PH1})"
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "حجم ملف الصورة هذا أكبر من الحجم المطلوب ({PH2}) لأبعادها المعروضة ({PH3}). يُرجى استخدام الصور المتجاوبة مع مختلف الأجهزة لتقليل حجم تنزيل الصورة. (الحجم المقدّر: {PH1})"
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "إنّ استخدام تنسيقات الفيديو بدلاً من ملفات GIF يمكن أن يؤدي إلى تحسين حجم تنزيل المحتوى المتحرك. (الحجم المقدّر: {PH1})"
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "الجهات الخارجية"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "قد يتم [تأخير الاستجابة لتفاعلات النقر بمقدار 300 ملي ثانية كحد أقصى](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) إذا لم يتم تحسين إطار العرض للأجهزة الجوّالة."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "إطار العرض
|
|
2706
|
+
"message": "تحسين إطار العرض للأجهزة الجوّالة"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen."
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "أسباب تغييرات التصميم"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "سيؤدي حجم عناصر DOM الكبير إلى زيادة استخدام الذاكرة وإطالة مدة عمليات احتساب الأنماط وإنتاج عمليات مُكلِفة لإعادة تدفق التنسيقات والتي تؤثر في استجابة الصفحة. [التعرّف على كيفية تجنُّب زيادة حجم عناصر DOM](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)"
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "تحسين حجم عناصر DOM"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "عرض الخط"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "يمكن أن يؤدي تقليل وقت تنزيل الصور إلى تحسين مدّة التحميل المُدرَكة للصفحة، بالإضافة إلى تحسين سرعة عرض أكبر محتوى مرئي. [مزيد من المعلومات حول تحسين حجم الصورة](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "تحسين عرض الصور"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "يمكن أن يؤدي زيادة عامل ضغط الصورة إلى تحسين حجم تنزيلها. (الحجم المقدّر: {PH1})"
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "يمكن تحسين حجم تنزيل هذه الصورة باستخدام تنسيق صور حديث (مثل WebP أو AVIF) أو زيادة ضغط الصورة. (الحجم المقدّر: {PH1})"
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "حجم ملف الصورة هذا أكبر من الحجم المطلوب ({PH2}) لأبعادها المعروضة ({PH3}). يُرجى استخدام الصور المتجاوبة مع مختلف الأجهزة لتقليل حجم تنزيل الصورة. (الحجم المقدّر: {PH1})"
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "إنّ استخدام تنسيقات الفيديو بدلاً من ملفات GIF يمكن أن يؤدي إلى تحسين حجم تنزيل المحتوى المتحرك. (الحجم المقدّر: {PH1})"
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "الجهات الخارجية"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "قد يتم [تأخير الاستجابة لتفاعلات النقر بمقدار 300 ملي ثانية كحد أقصى](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) إذا لم يتم تحسين إطار العرض للأجهزة الجوّالة."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "إطار العرض
|
|
2706
|
+
"message": "تحسين إطار العرض للأجهزة الجوّالة"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "بالنسبة إلى المحتوى الذي يتضمن صورًا متحركة، يمكنك استخدام [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) لتقليل استخدام وحدة المعالجة المركزية (CPU) عندما يكون المحتوى خارج الشاشة."
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "Причинители на структурни промени"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "Големият размер на DOM води до използване на повече памет, удължаване на стиловите изчисления и забавяне поради преоформяне. Това засяга реакцията на страницата. [Научете как да избягвате прекалено големия размер на DOM](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "Оптимизиране на размера на DOM"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "Първата мрежова заявка е най-важна. Намалете забавянето ѝ, като избягвате пренасочвания, осигурявате бърз отговор от сървъра и активирате компресирането на текста."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "Показване на шрифта"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "Намаляването на времето за изтегляне на изображенията може да подобри възприеманото време за зареждане на страницата и LCP. [Научете повече за оптимизирането на размера на изображенията](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "Подобряване на доставката на изображенията"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "Увеличаването на коефициента на компресиране на изображенията може да подобри размера за изтегляне на това изображение. (Приблизително {PH1})"
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "Използването на съвременен графичен формат (WebP, AVIF) или увеличаването на компресирането на изображенията може да подобри размера за изтегляне на това изображение. (Приблизително {PH1})"
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "Този графичен файл е по-голям от необходимото ({PH2}) за показваните му размери ({PH3}). Използвайте адаптивни изображения, за да намалите размера за изтегляне на изображението. (Приблизително {PH1}.)"
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "Използването на видеоформати вместо GIF файлове може да подобри размера за изтегляне на анимираното съдържание. (Приблизително {PH1})"
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "Започнете проверката от най-продължителната фаза. [Забавянията могат да бъдат сведени до минимум](https://web.dev/articles/optimize-inp#optimize_interactions). За да ускорите обработката, [оптимизирайте работата на основната нишка](https://web.dev/articles/optimize-long-tasks), която често е JS."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "Трети страни"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "При взаимодействията с докосване може да има [забавяне до 300 мсек](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/), ако прозоречният изглед не е оптимизиран за мобилни устройства."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "
|
|
2706
|
+
"message": "Оптимизиране на прозоречния изглед за мобилни устройства"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "При анимирано съдържание използвайте маркера [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), за да намалите използването на процесора, когато съдържанието е извън екрана."
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "Causants del canvi de disseny"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "Un DOM gran augmentarà l'ús de memòria, provocarà càlculs d'estil més llargs i produirà reinicis de reflux del disseny costosos que afecten la capacitat de resposta de la pàgina. [Obtén informació sobre com pots evitar una mida del DOM massa gran](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "Optimitza la mida del DOM"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "La primera sol·licitud de xarxa és la més important. Per reduir-ne la latència, evita les redireccions, assegura't que el servidor respongui amb rapidesa i activa la compressió de text."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "Visualització de la font"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "Reduir el temps de baixada de les imatges pot millorar el temps de càrrega percebut de la pàgina i l'LCP. [Més informació sobre com pots optimitzar la mida de les imatges](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "Millora la publicació d'imatges"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "Augmentar el factor de compressió de la imatge podria millorar la mida de baixada d'aquesta imatge (estimació: {PH1})."
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "Utilitzar un format d'imatge modern (WebP, AVIF) o augmentar la compressió de la imatge podria millorar la mida de baixada d'aquesta imatge (estimació: {PH1})."
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "Aquest fitxer d'imatge és més gran del que hauria de ser ({PH2}) per a les seves dimensions mostrades ({PH3}). Utilitza imatges responsives per reduir la mida de baixada de la imatge (estimació: {PH1})."
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "Utilitzar formats de vídeo en comptes de GIF pot millorar la mida de baixada del contingut animat (estimació: {PH1})."
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "Comença a investigar amb la fase més llarga. [Els retards es poden minimitzar](https://web.dev/articles/optimize-inp#optimize_interactions). Per reduir la durada del processament, [optimitza els costos del fil principal](https://web.dev/articles/optimize-long-tasks), sovint JavaScript."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "Tercers"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "Les interaccions amb tocs poden [retardar-se fins a 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) si la finestra gràfica no està optimitzada per a mòbils."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "
|
|
2706
|
+
"message": "Optimitza la finestra gràfica per a mòbils"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "En el cas de contingut animat, fes servir [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) per minimitzar l'ús de la CPU quan el contingut és fora de la pantalla."
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "Viníci změny rozvržení"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "Velký model DOM povede k většímu využití paměti, prodloužení výpočtů stylů a náročným přeformátováváním rozvržení, což bude mít dopad na responzivnost stránky. [Jak předejít nadměrné velikosti modelu DOM](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)"
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "Optimalizujte velikost modelu DOM"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "První síťový požadavek je nejdůležitější. Snižte jeho latenci tím, že nebudete používat přesměrování, zajistíte rychlou odezvu serveru a zapnete kompresi textu."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "Zobrazení písma"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "Snížení doby stahování obrázků může zlepšit vnímanou dobu načítání stránky a LCP. [Další informace o optimalizaci velikosti obrázku](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "Zlepšete zobrazování obrázků"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "Zvýšení faktoru komprese obrázku by mohlo snížit jeho stahovanou velikost. (Odh. {PH1})"
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "Stahovanou velikost tohoto obrázku by mohlo snížit použití moderního formátu (WebP, AVIF) nebo zvýšení komprese. (Odh. {PH1})"
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "Tento obrázkový soubor je větší ({PH2}), než je pro zobrazované rozměry ({PH3}) potřeba. Použijte responzivní obrázky, abyste snížili stahovanou velikost obrázků. (Odh. {PH1})"
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "Použití video formátů místo GIF může snížit stahovanou velikost animovaného obsahu. (Odh. {PH1})"
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "Začněte zkoumat nejdelší fází. [Zpoždění lze minimalizovat](https://web.dev/articles/optimize-inp#optimize_interactions). Dobu zpracování můžete zkrátit [optimalizací nákladů na hlavní vlákno](https://web.dev/articles/optimize-long-tasks) (často jím bývá JavaScript)."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "Třetí strany"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "Pokud zobrazovaná oblast není optimalizovaná pro mobily, mohou být interakce klepnutím [až o 300 ms zpožděny](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "
|
|
2706
|
+
"message": "Optimalizujte zobrazovanou oblast pro mobily"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "Pro animovaný obsah použijte prvek [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), abyste minimalizovali využití procesoru, když příslušný obsah není na obrazovce."
|
|
@@ -2627,6 +2627,12 @@
|
|
|
2627
2627
|
"node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
|
|
2628
2628
|
"message": "Årsager til layoutskift"
|
|
2629
2629
|
},
|
|
2630
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
|
|
2631
|
+
"message": "En stor DOM øger hukommelsesforbruget, medfører længerevarende beregninger af typografi og resulterer i dyre dynamiske tilpasninger af layout, der påvirker sidens svartid. [Få oplysninger om, hvordan du undgår en for stor DOM-størrelse](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
|
|
2634
|
+
"message": "Optimer DOM-størrelse"
|
|
2635
|
+
},
|
|
2630
2636
|
"node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
|
|
2631
2637
|
"message": "Din første netværksanmodning er den vigtigste. Reducer forsinkelsen ved at undgå omdirigeringer, sikre en hurtig serversvartid og aktivere tekstkomprimering."
|
|
2632
2638
|
},
|
|
@@ -2639,6 +2645,24 @@
|
|
|
2639
2645
|
"node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
|
|
2640
2646
|
"message": "Skrifttypevisning"
|
|
2641
2647
|
},
|
|
2648
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
|
|
2649
|
+
"message": "Hvis du reducerer downloadtiden for billeder, kan det forbedre den oplevede indlæsningstid for siden og LCP. [Få flere oplysninger om optimering af billedstørrelse](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
|
|
2650
|
+
},
|
|
2651
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
|
|
2652
|
+
"message": "Optimer billedlevering"
|
|
2653
|
+
},
|
|
2654
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
|
|
2655
|
+
"message": "Hvis du øger billedkomprimeringen, kan det forbedre billedets downloadstørrelse. (Estimeret {PH1})"
|
|
2656
|
+
},
|
|
2657
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
|
|
2658
|
+
"message": "Hvis du bruger et moderne billedformat (WebP, AVIF) eller øger billedkomprimeringen, kan det forbedre billedets downloadstørrelse. (Estimeret {PH1})"
|
|
2659
|
+
},
|
|
2660
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
|
|
2661
|
+
"message": "Denne billedfil er større end nødvendigt ({PH2}) i forhold til de viste dimensioner ({PH3}). Brug responsive billeder til at reducere billedets downloadstørrelse. (Estimeret {PH1})"
|
|
2662
|
+
},
|
|
2663
|
+
"node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
|
|
2664
|
+
"message": "Hvis du bruger videoformater i stedet for giffer, kan det forbedre downloadstørrelsen på det animerede indhold. (Estimeret {PH1})"
|
|
2665
|
+
},
|
|
2642
2666
|
"node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
|
|
2643
2667
|
"message": "Start med at undersøge den længste fase. [Forsinkelser kan minimeres](https://web.dev/articles/optimize-inp#optimize_interactions). Hvis du vil reducere behandlingsvarigheden, skal du [optimere omkostningerne for hovedtråden](https://web.dev/articles/optimize-long-tasks) (typisk JS)."
|
|
2644
2668
|
},
|
|
@@ -2676,10 +2700,10 @@
|
|
|
2676
2700
|
"message": "Tredjeparter"
|
|
2677
2701
|
},
|
|
2678
2702
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
|
|
2679
|
-
"message": "
|
|
2703
|
+
"message": "Trykinteraktioner kan blive [forsinket med op til 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/), hvis viewport ikke er optimeret til mobilen."
|
|
2680
2704
|
},
|
|
2681
2705
|
"node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
|
|
2682
|
-
"message": "
|
|
2706
|
+
"message": "Optimer viewport til mobil"
|
|
2683
2707
|
},
|
|
2684
2708
|
"node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
|
|
2685
2709
|
"message": "Ved animeret indhold bør du bruge [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) til at minimere brugen af CPU, når indholdet er uden for skærmen."
|