lighthouse 12.6.1 → 12.7.0-dev.20250628

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.
Files changed (162) hide show
  1. package/cli/test/smokehouse/core-tests.js +2 -0
  2. package/cli/test/smokehouse/frontends/lib.js +0 -2
  3. package/cli/test/smokehouse/frontends/smokehouse-bin.js +1 -3
  4. package/cli/test/smokehouse/lighthouse-runners/cli.js +1 -1
  5. package/cli/test/smokehouse/smokehouse.js +0 -2
  6. package/core/audits/audit.d.ts +7 -0
  7. package/core/audits/audit.js +17 -2
  8. package/core/audits/byte-efficiency/byte-efficiency-audit.js +6 -8
  9. package/core/audits/byte-efficiency/legacy-javascript.js +0 -1
  10. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
  11. package/core/audits/deprecations.js +0 -2
  12. package/core/audits/insights/cache-insight.js +2 -1
  13. package/core/audits/insights/cls-culprits-insight.js +6 -7
  14. package/core/audits/insights/{interaction-to-next-paint-insight.d.ts → inp-breakdown-insight.d.ts} +3 -3
  15. package/core/audits/insights/{interaction-to-next-paint-insight.js → inp-breakdown-insight.js} +10 -10
  16. package/core/audits/insights/insight-audit.d.ts +7 -4
  17. package/core/audits/insights/insight-audit.js +48 -7
  18. package/core/audits/insights/lcp-breakdown-insight.d.ts +16 -0
  19. package/core/audits/insights/{lcp-phases-insight.js → lcp-breakdown-insight.js} +19 -19
  20. package/core/audits/insights/modern-http-insight.js +0 -2
  21. package/core/audits/insights/network-dependency-tree-insight.js +85 -8
  22. package/core/audits/insights/render-blocking-insight.js +1 -1
  23. package/core/audits/layout-shifts.js +5 -4
  24. package/core/audits/seo/crawlable-anchors.js +27 -0
  25. package/core/audits/seo/link-text.js +130 -83
  26. package/core/audits/third-party-cookies.js +0 -2
  27. package/core/audits/valid-source-maps.js +0 -2
  28. package/core/computed/js-bundles.js +0 -1
  29. package/core/computed/metrics/cumulative-layout-shift.js +1 -1
  30. package/core/computed/metrics/lantern-metric.js +4 -3
  31. package/core/computed/metrics/timing-summary.js +4 -1
  32. package/core/computed/page-dependency-graph.js +3 -3
  33. package/core/computed/trace-engine-result.js +1 -2
  34. package/core/config/config.js +1 -1
  35. package/core/config/default-config.js +4 -4
  36. package/core/config/experimental-config.js +2 -2
  37. package/core/config/filters.js +7 -0
  38. package/core/config/validation.js +4 -0
  39. package/core/gather/base-artifacts.js +3 -0
  40. package/core/gather/driver/environment.d.ts +6 -0
  41. package/core/gather/driver/environment.js +17 -0
  42. package/core/gather/driver/execution-context.d.ts +3 -1
  43. package/core/gather/driver/execution-context.js +3 -1
  44. package/core/gather/driver/navigation.js +1 -3
  45. package/core/gather/driver/wait-for-condition.js +0 -1
  46. package/core/gather/fetcher.js +0 -2
  47. package/core/gather/gatherers/accessibility.js +1 -1
  48. package/core/gather/gatherers/anchor-elements.js +61 -2
  49. package/core/gather/gatherers/cache-contents.js +0 -2
  50. package/core/gather/gatherers/css-usage.js +3 -1
  51. package/core/gather/gatherers/dobetterweb/doctype.js +0 -2
  52. package/core/gather/gatherers/dobetterweb/domstats.js +1 -1
  53. package/core/gather/gatherers/full-page-screenshot.js +1 -1
  54. package/core/gather/gatherers/image-elements.js +1 -1
  55. package/core/gather/gatherers/inspector-issues.js +1 -1
  56. package/core/gather/gatherers/link-elements.js +1 -1
  57. package/core/gather/gatherers/stacks.js +0 -1
  58. package/core/gather/gatherers/stylesheets.js +3 -1
  59. package/core/gather/gatherers/trace-elements.d.ts +3 -4
  60. package/core/gather/gatherers/trace-elements.js +13 -43
  61. package/core/gather/gatherers/viewport-dimensions.js +0 -2
  62. package/core/index.cjs +0 -1
  63. package/core/index.d.cts +5 -0
  64. package/core/lib/asset-saver.d.ts +1 -1
  65. package/core/lib/asset-saver.js +20 -8
  66. package/core/lib/bf-cache-strings.js +4 -1
  67. package/core/lib/deprecations-strings.d.ts +51 -47
  68. package/core/lib/deprecations-strings.js +14 -8
  69. package/core/lib/i18n/i18n.js +0 -2
  70. package/core/lib/lantern-trace-saver.js +1 -1
  71. package/core/lib/lh-error.js +0 -1
  72. package/core/lib/manifest-parser.js +0 -2
  73. package/core/lib/minify-devtoolslog.js +0 -2
  74. package/core/lib/sentry.d.ts +1 -1
  75. package/core/lib/sentry.js +2 -2
  76. package/core/runner.js +11 -8
  77. package/core/scoring.d.ts +186 -15
  78. package/core/scripts/manual-chrome-launcher.js +0 -1
  79. package/dist/report/bundle.esm.js +14 -12
  80. package/dist/report/flow.js +18 -16
  81. package/dist/report/standalone.js +15 -13
  82. package/eslint.config.mjs +242 -0
  83. package/flow-report/src/common.tsx +1 -0
  84. package/flow-report/src/i18n/i18n.tsx +1 -0
  85. package/flow-report/src/util.ts +2 -0
  86. package/package.json +23 -19
  87. package/readme.md +3 -2
  88. package/report/assets/styles.css +11 -9
  89. package/report/assets/templates.html +1 -1
  90. package/report/generator/file-namer.d.ts +5 -0
  91. package/report/generator/file-namer.js +1 -1
  92. package/report/generator/flow-report-assets.js +1 -1
  93. package/report/generator/report-assets.js +1 -1
  94. package/report/generator/report-generator.js +3 -3
  95. package/report/renderer/api.js +1 -0
  96. package/report/renderer/components.js +2 -2
  97. package/report/renderer/details-renderer.d.ts +5 -0
  98. package/report/renderer/details-renderer.js +35 -3
  99. package/report/renderer/dom.d.ts +2 -0
  100. package/report/renderer/dom.js +6 -0
  101. package/report/renderer/i18n-formatter.js +2 -1
  102. package/report/renderer/performance-category-renderer.js +2 -2
  103. package/report/renderer/report-renderer.js +1 -0
  104. package/report/renderer/report-ui-features.d.ts +1 -0
  105. package/report/renderer/report-ui-features.js +16 -0
  106. package/report/renderer/report-utils.js +3 -2
  107. package/report/renderer/text-encoding.js +0 -2
  108. package/report/renderer/topbar-features.js +1 -1
  109. package/report/types/report-renderer.d.ts +5 -0
  110. package/shared/localization/locales/ar-XB.json +57 -69
  111. package/shared/localization/locales/ar.json +57 -69
  112. package/shared/localization/locales/bg.json +57 -69
  113. package/shared/localization/locales/ca.json +57 -69
  114. package/shared/localization/locales/cs.json +57 -69
  115. package/shared/localization/locales/da.json +57 -69
  116. package/shared/localization/locales/de.json +57 -69
  117. package/shared/localization/locales/el.json +57 -69
  118. package/shared/localization/locales/en-GB.json +57 -69
  119. package/shared/localization/locales/en-US.json +73 -61
  120. package/shared/localization/locales/en-XL.json +73 -61
  121. package/shared/localization/locales/es-419.json +57 -69
  122. package/shared/localization/locales/es.json +56 -68
  123. package/shared/localization/locales/fi.json +57 -69
  124. package/shared/localization/locales/fil.json +57 -69
  125. package/shared/localization/locales/fr.json +57 -69
  126. package/shared/localization/locales/he.json +57 -69
  127. package/shared/localization/locales/hi.json +57 -69
  128. package/shared/localization/locales/hr.json +57 -69
  129. package/shared/localization/locales/hu.json +56 -68
  130. package/shared/localization/locales/id.json +57 -69
  131. package/shared/localization/locales/it.json +56 -68
  132. package/shared/localization/locales/ja.json +57 -69
  133. package/shared/localization/locales/ko.json +57 -69
  134. package/shared/localization/locales/lt.json +57 -69
  135. package/shared/localization/locales/lv.json +57 -69
  136. package/shared/localization/locales/nl.json +57 -69
  137. package/shared/localization/locales/no.json +57 -69
  138. package/shared/localization/locales/pl.json +56 -68
  139. package/shared/localization/locales/pt-PT.json +57 -69
  140. package/shared/localization/locales/pt.json +57 -69
  141. package/shared/localization/locales/ro.json +57 -69
  142. package/shared/localization/locales/ru.json +58 -70
  143. package/shared/localization/locales/sk.json +57 -69
  144. package/shared/localization/locales/sl.json +56 -68
  145. package/shared/localization/locales/sr-Latn.json +57 -69
  146. package/shared/localization/locales/sr.json +57 -69
  147. package/shared/localization/locales/sv.json +57 -69
  148. package/shared/localization/locales/ta.json +57 -69
  149. package/shared/localization/locales/te.json +57 -69
  150. package/shared/localization/locales/th.json +56 -68
  151. package/shared/localization/locales/tr.json +57 -69
  152. package/shared/localization/locales/uk.json +57 -69
  153. package/shared/localization/locales/vi.json +57 -69
  154. package/shared/localization/locales/zh-HK.json +57 -69
  155. package/shared/localization/locales/zh-TW.json +56 -68
  156. package/shared/localization/locales/zh.json +57 -69
  157. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -1
  158. package/types/artifacts.d.ts +8 -1
  159. package/types/internal/test.d.ts +1 -1
  160. package/types/lhr/audit-details.d.ts +13 -3
  161. package/types/lhr/lhr.d.ts +8 -1
  162. package/core/audits/insights/lcp-phases-insight.d.ts +0 -16
@@ -2171,9 +2171,6 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "Запити ресурсів до URL-адрес, які містять вилучені пробіли \\(n|r|t) та знаки менше (<), блокуються. Щоб завантажити ці ресурси, вилучіть символи нового рядка з таких місць, як значення атрибутів елементів, і закодуйте знаки менше."
2173
2173
  },
2174
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
- "message": "Автоматичне визначення набору символів ISO-2022-JP більше не підтримується, і незабаром його буде вимкнено. Укажіть набір символів у заголовку Content Type або за допомогою метатегу (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
- },
2177
2174
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2178
2175
  "message": "chrome.loadTimes() не підтримується. Натомість використовуйте стандартизований інтерфейс API: Navigation Timing 2."
2179
2176
  },
@@ -2195,9 +2192,6 @@
2195
2192
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowConfirm": {
2196
2193
  "message": "Запуск window.confirm із міждоменних елементів iframe не підтримується, і в майбутньому цю функцію буде вилучено."
2197
2194
  },
2198
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DOMMutationEvents": {
2199
- "message": "Події DOM MutationEvent, зокрема DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument і DOMCharacterDataModified, більше не підтримуються (https://w3c.github.io/uievents/#legacy-event-types), і їх буде вилучено. Натомість використовуйте MutationObserver."
2200
- },
2201
2195
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DataUrlInSvgUse": {
2202
2196
  "message": "Обробка даних: підтримку URL-адрес у SVGUseElement припинено, і в майбутньому цю функцію буде вилучено."
2203
2197
  },
@@ -2327,6 +2321,9 @@
2327
2321
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
2328
2322
  "message": "Для розширень потрібно ввімкнути ізоляцію від міждоменних джерел, щоб і надалі використовувати SharedArrayBuffer. Докладніше читайте на сторінці https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/."
2329
2323
  },
2324
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | WebGPUAdapterIsFallbackAdapter": {
2325
+ "message": "Атрибут GPUAdapter isFallbackAdapter більше не підтримується. Натомість використовуйте атрибут GPUAdapterInfo isFallbackAdapter."
2326
+ },
2330
2327
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XHRJSONEncodingDetection": {
2331
2328
  "message": "UTF-16 не підтримується відповіддю JSON у XMLHttpRequest"
2332
2329
  },
@@ -2339,9 +2336,6 @@
2339
2336
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2340
2337
  "message": "Зміщення макета відбувається, коли елементи переміщуються без взаємодії з користувачем. [Дізнайтеся причини зміщення макета](https://web.dev/articles/optimize-cls), наприклад додавання або видалення елементів чи зміна шрифтів під час завантаження сторінки."
2341
2338
  },
2342
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | fontRequest": {
2343
- "message": "Запит на шрифт"
2344
- },
2345
2339
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
2346
2340
  "message": "Вставлено iframe"
2347
2341
  },
@@ -2360,9 +2354,6 @@
2360
2354
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
2361
2355
  "message": "Основні причини зміщення макета"
2362
2356
  },
2363
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImages": {
2364
- "message": "Зображення невідомих розмірів"
2365
- },
2366
2357
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
2367
2358
  "message": "Найгірший кластер"
2368
2359
  },
@@ -2414,12 +2405,21 @@
2414
2405
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2415
2406
  "message": "Перший запит мережі найважливіший. Щоб зменшити його затримку, уникайте переспрямувань, забезпечте швидку відповідь сервера й увімкніть стиснення тексту."
2416
2407
  },
2408
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2409
+ "message": "Містить переспрямування ({PH1}, +{PH2})"
2410
+ },
2411
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2412
+ "message": "Сервер відповідає повільно ({PH1}) "
2413
+ },
2417
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2418
2415
  "message": "Без стиснення"
2419
2416
  },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2421
2418
  "message": "Уникає переспрямувань"
2422
2419
  },
2420
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2421
+ "message": "Сервер відповідає швидко ({PH1}) "
2422
+ },
2423
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2424
2424
  "message": "Застосовано стиснення тексту"
2425
2425
  },
@@ -2510,30 +2510,6 @@
2510
2510
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
2511
2511
  "message": "Якщо використовувати відеоформати замість GIF, розмір завантаженого анімованого контенту може зменшитися."
2512
2512
  },
2513
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2514
- "message": "Почніть аналіз із найдовшої фази. [Затримки можна зменшити.](https://web.dev/articles/optimize-inp#optimize_interactions) Щоб скоротити час обробки, [оптимізуйте витрати основного потоку](https://web.dev/articles/optimize-long-tasks), часто JS."
2515
- },
2516
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | duration": {
2517
- "message": "Тривалість"
2518
- },
2519
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | inputDelay": {
2520
- "message": "Затримка відповіді"
2521
- },
2522
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | noInteractions": {
2523
- "message": "Взаємодій не виявлено"
2524
- },
2525
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | phase": {
2526
- "message": "Етап"
2527
- },
2528
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | presentationDelay": {
2529
- "message": "Затримка перед відображенням відповіді"
2530
- },
2531
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | processingDuration": {
2532
- "message": "Тривалість обробки"
2533
- },
2534
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2535
- "message": "Показник INP за етапами"
2536
- },
2537
2513
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2538
2514
  "message": "Щоб оптимізувати показник LCP, зробіть зображення LCP [видимим](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) у HTML-коді відразу й [не використовуйте відкладене завантаження](https://web.dev/articles/lcp-lazy-loading)"
2539
2515
  },
@@ -2561,36 +2537,6 @@
2561
2537
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2562
2538
  "message": "Виявлення запитів LCP"
2563
2539
  },
2564
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2565
- "message": "Для кожного етапу передбачено [конкретні стратегії оптимізації](https://web.dev/articles/optimize-lcp#lcp-breakdown). В ідеалі більшість часу LCP має витрачатися на завантаження ресурсів, не в межах затримок."
2566
- },
2567
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | duration": {
2568
- "message": "Тривалість"
2569
- },
2570
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | elementRenderDelay": {
2571
- "message": "Затримка відображення елемента"
2572
- },
2573
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | fieldDuration": {
2574
- "message": "75-й процентиль поля"
2575
- },
2576
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | noLcp": {
2577
- "message": "LCP не виявлено"
2578
- },
2579
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | phase": {
2580
- "message": "Етап"
2581
- },
2582
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDelay": {
2583
- "message": "Затримка завантаження ресурсу"
2584
- },
2585
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDuration": {
2586
- "message": "Тривалість завантаження ресурсу"
2587
- },
2588
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | timeToFirstByte": {
2589
- "message": "Time to First Byte"
2590
- },
2591
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2592
- "message": "Показник LCP за етапами"
2593
- },
2594
2540
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnScript": {
2595
2541
  "message": "Скрипт"
2596
2542
  },
@@ -2598,7 +2544,7 @@
2598
2544
  "message": "Заощаджені байти"
2599
2545
  },
2600
2546
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": {
2601
- "message": "Поліфіли й перетворення дають застарілим вебпереглядачам змогу використовувати нові функції JavaScript. Однак багато з них не потрібні для сучасних вебпереглядачів. Змініть процес складання JavaScript, щоб не транспілювати функції [базового набору](https://web.dev/articles/baseline-and-polyfills), якщо вам не потрібно підтримувати застарілі вебпереглядачі. [Дізнайтеся, чому більшість сайтів можуть розгортати код ES6+ без транспілювання](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2547
+ "message": "Поліфіли й перетворення дають вебпереглядачам старіших версій змогу використовувати нові функції JavaScript. Однак багато з них не потрібні для сучасних вебпереглядачів. Змініть процес складання JavaScript, щоб не транспілювати функції [базового набору](https://web.dev/articles/baseline-and-polyfills), якщо вам не потрібно підтримувати вебпереглядачі старіших версій. [Дізнайтеся, чому більшість сайтів можуть розгортати код ES6+ без транспілювання](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2602
2548
  },
2603
2549
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": {
2604
2550
  "message": "Застарілі функції JavaScript"
@@ -2618,23 +2564,65 @@
2618
2564
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": {
2619
2565
  "message": "Сучасний протокол HTTP"
2620
2566
  },
2567
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": {
2568
+ "message": "Джерело"
2569
+ },
2570
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnRequest": {
2571
+ "message": "Запит"
2572
+ },
2573
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": {
2574
+ "message": "Джерело"
2575
+ },
2576
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnTime": {
2577
+ "message": "Час"
2578
+ },
2579
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": {
2580
+ "message": "Очікуване заощадження LCP"
2581
+ },
2582
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": {
2583
+ "message": "Невикористане джерело для попереднього підключення. Переконайтеся, що атрибут crossorigin використовується правильно."
2584
+ },
2621
2585
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": {
2622
2586
  "message": "[Щоб уникнути утворення ланцюжків критичних запитів](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains), зменште довжину ланцюжків і розмір завантажень або відкладіть завантаження непотрібних ресурсів. Це допоможе пришвидшити завантаження сторінки."
2623
2587
  },
2588
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": {
2589
+ "message": "Додайте підказки [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) для найважливіших джерел (бажано використовувати щонайбільше 4)."
2590
+ },
2591
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": {
2592
+ "message": "Варіанти джерел для попереднього підключення"
2593
+ },
2624
2594
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | maxCriticalPathLatency": {
2625
2595
  "message": "Максимальна затримка критичного шляху:"
2626
2596
  },
2627
2597
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noNetworkDependencyTree": {
2628
2598
  "message": "Немає завдань відрисовки, на які впливають залежності мережі"
2629
2599
  },
2600
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectCandidates": {
2601
+ "message": "Немає додаткових джерел, для яких варто налаштувати попереднє підключення"
2602
+ },
2603
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectOrigins": {
2604
+ "message": "немає попередньо підключених джерел"
2605
+ },
2606
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": {
2607
+ "message": "Підказки [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) допомагають вебпереглядачу встановлювати з’єднання на початку завантаження сторінки, що заощаджує час під час першого запиту до відповідного джерела. Нижче наведено джерела, до яких сторінка підключатиметься заздалегідь."
2608
+ },
2609
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": {
2610
+ "message": "Попередньо підключені джерела"
2611
+ },
2630
2612
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": {
2631
2613
  "message": "Дерево залежностей мережі"
2632
2614
  },
2615
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | tooManyPreconnectLinksWarning": {
2616
+ "message": "Знайдено більше ніж 4 підключення preconnect. Такі засоби слід використовувати зрідка й лише для найважливіших джерел."
2617
+ },
2618
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | unusedWarning": {
2619
+ "message": "Невикористане джерело для попереднього підключення. Використовуйте підказки preconnect тільки для джерел, яким сторінка, імовірно, надсилатиме запити."
2620
+ },
2633
2621
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | warningDescription": {
2634
2622
  "message": "Щоб уникнути утворення ланцюжків критичних запитів, зменште довжину ланцюжків і розмір завантажень або відкладіть завантаження непотрібних ресурсів. Це допоможе пришвидшити завантаження сторінки."
2635
2623
  },
2636
2624
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2637
- "message": "Запити блокують початкове відображення сторінки, що може викликати затримку завантаження елементів LCP. За допомогою [відкладання або вставки](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) можна усунути ці запити мережі з критичного шляху."
2625
+ "message": "Запити блокують початкове відображення сторінки, що може викликати затримку завантаження елементів LCP. За допомогою [відкладання або вставки](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources) можна усунути ці запити мережі з критичного шляху."
2638
2626
  },
2639
2627
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
2640
2628
  "message": "Тривалість"
@@ -2682,7 +2670,7 @@
2682
2670
  "message": "Розмір передавання"
2683
2671
  },
2684
2672
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2685
- "message": "Сторонній код може значно погіршити швидкість завантаження. [Зменште обсяг стороннього коду й відкладіть його завантаження](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), щоб надати пріоритет контенту сторінки."
2673
+ "message": "Сторонній код може значно погіршити швидкість завантаження. [Зменште обсяг стороннього коду й відкладіть його завантаження](https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/), щоб надати пріоритет контенту сторінки."
2686
2674
  },
2687
2675
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
2688
2676
  "message": "Сторонніх розробників не знайдено"
@@ -2171,9 +2171,6 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "Các yêu cầu tài nguyên có URL chứa cả ký tự \\(n|r|t) khoảng trắng đã bị xoá và ký tự nhỏ hơn (<) sẽ bị chặn. Vui lòng xoá các dòng mới và mã hoá ký tự nhỏ hơn khỏi các vị trí như giá trị thuộc tính phần tử để tải những tài nguyên như vậy."
2173
2173
  },
2174
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
- "message": "Tính năng tự động phát hiện bộ ký tự ISO-2022-JP không được dùng nữa và sẽ bị tắt trong tương lai gần. Vui lòng chỉ định bộ ký tự trong tiêu đề Loại nội dung hoặc bằng cách sử dụng thẻ meta (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
- },
2177
2174
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2178
2175
  "message": "chrome.loadTimes() không được dùng nữa; thay vào đó, hãy sử dụng API đã chuẩn hoá: Navigation Timing 2."
2179
2176
  },
@@ -2195,9 +2192,6 @@
2195
2192
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowConfirm": {
2196
2193
  "message": "Tính năng kích hoạt window.confirm qua các iframe trên nhiều nguồn gốc không được dùng nữa và sẽ bị loại bỏ trong tương lai."
2197
2194
  },
2198
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DOMMutationEvents": {
2199
- "message": "Các Sự kiện đột biến DOM, trong đó có DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument và DOMCharacterDataModified, không được dùng nữa (https://w3c.github.io/uievents/#legacy-event-types) và sẽ bị loại bỏ. Thay vào đó, vui lòng sử dụng MutationObserver."
2200
- },
2201
2195
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DataUrlInSvgUse": {
2202
2196
  "message": "Hỗ trợ về dữ liệu: Các URL trong SVGUseElement không được dùng nữa và sẽ bị loại bỏ trong tương lai."
2203
2197
  },
@@ -2327,6 +2321,9 @@
2327
2321
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
2328
2322
  "message": "Các tiện ích phải chọn sử dụng chế độ tách biệt nhiều nguồn gốc đẻ có thể tiếp tục sử dụng SharedArrayBuffer. Xem https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/."
2329
2323
  },
2324
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | WebGPUAdapterIsFallbackAdapter": {
2325
+ "message": "Thuộc tính GPUAdapter isFallbackAdapter đã ngừng hoạt động. Thay vào đó, hãy sử dụng thuộc tính GPUAdapterInfo isFallbackAdapter."
2326
+ },
2330
2327
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XHRJSONEncodingDetection": {
2331
2328
  "message": "JSON phản hồi không hỗ trợ UTF-16 trong XMLHttpRequest"
2332
2329
  },
@@ -2339,9 +2336,6 @@
2339
2336
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2340
2337
  "message": "Bố cục thay đổi khi phần tử di chuyển mà không có sự tương tác của người dùng. [Hãy tìm hiểu nguyên nhân bố cục thay đổi](https://web.dev/articles/optimize-cls), chẳng hạn như phần tử được thêm, bị xoá hoặc phông chữ của phần tử thay đổi khi trang tải."
2341
2338
  },
2342
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | fontRequest": {
2343
- "message": "Yêu cầu phông chữ"
2344
- },
2345
2339
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
2346
2340
  "message": "iframe được chèn"
2347
2341
  },
@@ -2360,9 +2354,6 @@
2360
2354
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
2361
2355
  "message": "Nguyên nhân làm thay đổi bố cục thường gặp nhất"
2362
2356
  },
2363
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImages": {
2364
- "message": "Hình ảnh chưa xác định kích thước"
2365
- },
2366
2357
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
2367
2358
  "message": "Cụm tệ nhất"
2368
2359
  },
@@ -2414,12 +2405,21 @@
2414
2405
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2415
2406
  "message": "Yêu cầu mạng đầu tiên là quan trọng nhất. Giảm độ trễ bằng cách tránh dùng đường liên kết chuyển hướng, đảm bảo máy chủ phản hồi nhanh và bật tính năng nén văn bản."
2416
2407
  },
2408
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2409
+ "message": "Có chuyển hướng ({PH1} chuyển hướng, +{PH2})"
2410
+ },
2411
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2412
+ "message": "Máy chủ phản hồi chậm (theo quan sát là {PH1}) "
2413
+ },
2417
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2418
2415
  "message": "Không áp dụng tính năng nén"
2419
2416
  },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2421
2418
  "message": "Tránh chuyển hướng"
2422
2419
  },
2420
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2421
+ "message": "Máy chủ phản hồi nhanh (theo quan sát là {PH1}) "
2422
+ },
2423
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2424
2424
  "message": "Áp dụng tính năng nén văn bản"
2425
2425
  },
@@ -2510,30 +2510,6 @@
2510
2510
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
2511
2511
  "message": "Việc sử dụng định dạng video thay vì GIF có thể cải thiện kích thước tải xuống của nội dung động."
2512
2512
  },
2513
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2514
- "message": "Bắt đầu kiểm tra giai đoạn dài nhất. [Có thể giảm thiểu sự chậm trễ](https://web.dev/articles/optimize-inp#optimize_interactions). Để giảm thời gian xử lý, [hãy tối ưu hoá hiệu suất của luồng chính](https://web.dev/articles/optimize-long-tasks), thường là JS."
2515
- },
2516
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | duration": {
2517
- "message": "Thời lượng"
2518
- },
2519
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | inputDelay": {
2520
- "message": "Độ trễ khi nhập thông tin"
2521
- },
2522
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | noInteractions": {
2523
- "message": "Không phát hiện ra hoạt động tương tác nào"
2524
- },
2525
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | phase": {
2526
- "message": "Pha"
2527
- },
2528
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | presentationDelay": {
2529
- "message": "Độ trễ khi trình bày"
2530
- },
2531
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | processingDuration": {
2532
- "message": "Thời gian xử lý"
2533
- },
2534
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2535
- "message": "INP theo pha"
2536
- },
2537
2513
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2538
2514
  "message": "Tối ưu hoá LCP (Nội dung lớn nhất hiển thị) bằng cách giúp trình duyệt [có thể tìm thấy](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) hình ảnh LCP dựa vào HTML ngay lập tức và [tránh tải từng phần](https://web.dev/articles/lcp-lazy-loading)"
2539
2515
  },
@@ -2561,36 +2537,6 @@
2561
2537
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2562
2538
  "message": "Phát hiện yêu cầu LCP"
2563
2539
  },
2564
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2565
- "message": "Mỗi [giai đoạn có một chiến lược cải thiện cụ thể](https://web.dev/articles/optimize-lcp#lcp-breakdown). Tốt nhất là thời gian hiển thị LCP (Nội dung lớn nhất hiển thị) nên được dùng để tải các tài nguyên thay vì bị chậm trễ."
2566
- },
2567
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | duration": {
2568
- "message": "Thời lượng"
2569
- },
2570
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | elementRenderDelay": {
2571
- "message": "Độ trễ khi hiển thị phần tử"
2572
- },
2573
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | fieldDuration": {
2574
- "message": "Nhóm 75 phần trăm của dữ liệu thực địa"
2575
- },
2576
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | noLcp": {
2577
- "message": "Không phát hiện ra LCP"
2578
- },
2579
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | phase": {
2580
- "message": "Pha"
2581
- },
2582
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDelay": {
2583
- "message": "Độ trễ khi tải tài nguyên"
2584
- },
2585
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDuration": {
2586
- "message": "Thời lượng tải tài nguyên"
2587
- },
2588
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | timeToFirstByte": {
2589
- "message": "Thời gian cho byte đầu tiên"
2590
- },
2591
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2592
- "message": "LCP theo pha"
2593
- },
2594
2540
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnScript": {
2595
2541
  "message": "Tập lệnh"
2596
2542
  },
@@ -2598,7 +2544,7 @@
2598
2544
  "message": "Số byte bị lãng phí"
2599
2545
  },
2600
2546
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": {
2601
- "message": "Mã Polyfill và Transform cho phép trình duyệt cũ dùng các tính năng mới của JavaScript. Tuy nhiên, nhiều tính năng không cần thiết cho trình duyệt hiện đại. Hãy cân nhắc sửa đổi quy trình xây dựng JavaScript để không chuyển đổi mã nguồn các tính năng [Đường cơ sở](https://web.dev/articles/baseline-and-polyfills), trừ phi bạn biết rằng mình phải hỗ trợ các trình duyệt cũ. [Tìm hiểu lý do hầu hết các trang web có thể triển khai mã ES6+ mà không cần chuyển đổi mã nguồn](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2547
+ "message": "Mã Polyfill và Transform cho phép các trình duyệt cũ sử dụng những tính năng mới của JavaScript. Tuy nhiên, nhiều tính năng không cần thiết cho trình duyệt hiện đại. Hãy cân nhắc sửa đổi quy trình xây dựng JavaScript để không chuyển đổi mã nguồn các tính năng [Đường cơ sở](https://web.dev/articles/baseline-and-polyfills), trừ phi bạn biết rằng mình phải hỗ trợ các trình duyệt cũ. [Tìm hiểu lý do hầu hết các trang web có thể triển khai mã ES6+ mà không cần chuyển đổi mã nguồn](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2602
2548
  },
2603
2549
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": {
2604
2550
  "message": "JavaScript cũ"
@@ -2618,23 +2564,65 @@
2618
2564
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": {
2619
2565
  "message": "HTTP hiện đại"
2620
2566
  },
2567
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": {
2568
+ "message": "Điểm gốc"
2569
+ },
2570
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnRequest": {
2571
+ "message": "Yêu cầu"
2572
+ },
2573
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": {
2574
+ "message": "Nguồn"
2575
+ },
2576
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnTime": {
2577
+ "message": "Thời gian"
2578
+ },
2579
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": {
2580
+ "message": "Mức tiết kiệm LCP ước tính"
2581
+ },
2582
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": {
2583
+ "message": "Kết nối trước chưa sử dụng. Hãy kiểm tra để đảm bảo thuộc tính crossorigin được sử dụng đúng cách."
2584
+ },
2621
2585
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": {
2622
2586
  "message": "[Tránh tạo chuỗi các yêu cầu quan trọng](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) bằng cách giảm độ dài chuỗi, giảm kích thước tài nguyên tải xuống hoặc trì hoãn tải xuống các tài nguyên không cần thiết để cải thiện tốc độ tải trang."
2623
2587
  },
2588
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": {
2589
+ "message": "Thêm gợi ý [kết nối trước](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) cho các điểm gốc quan trọng nhất, nhưng hãy cố gắng sử dụng ít hơn 4 gợi ý."
2590
+ },
2591
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": {
2592
+ "message": "Đề xuất kết nối trước"
2593
+ },
2624
2594
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | maxCriticalPathLatency": {
2625
2595
  "message": "Độ trễ tối đa của đường dẫn quan trọng:"
2626
2596
  },
2627
2597
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noNetworkDependencyTree": {
2628
2598
  "message": "Không có tác vụ kết xuất nào chịu ảnh hưởng của phần phụ thuộc mạng"
2629
2599
  },
2600
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectCandidates": {
2601
+ "message": "Không có điểm gốc nào khác phù hợp để kết nối trước"
2602
+ },
2603
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectOrigins": {
2604
+ "message": "không có điểm gốc nào được kết nối trước"
2605
+ },
2606
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": {
2607
+ "message": "Gợi ý [kết nối trước](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) giúp trình duyệt thiết lập kết nối sớm hơn trong quá trình tải trang, nhờ đó tiết kiệm thời gian khi gửi yêu cầu đầu tiên đối với điểm gốc đó. Sau đây là những điểm gốc mà trang đã kết nối trước."
2608
+ },
2609
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": {
2610
+ "message": "Điểm gốc được kết nối trước"
2611
+ },
2630
2612
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": {
2631
2613
  "message": "Cây phần phụ thuộc mạng"
2632
2614
  },
2615
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | tooManyPreconnectLinksWarning": {
2616
+ "message": "Đã phát hiện ra hơn 4 đường kết nối preconnect. Bạn nên dùng những đường kết nối này một cách hợp lý và chỉ dùng cho các điểm gốc quan trọng nhất."
2617
+ },
2618
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | unusedWarning": {
2619
+ "message": "Kết nối trước chưa sử dụng. Chỉ sử dụng preconnect cho những điểm gốc mà trang có khả năng yêu cầu."
2620
+ },
2633
2621
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | warningDescription": {
2634
2622
  "message": "Tránh tạo chuỗi các yêu cầu quan trọng bằng cách giảm độ dài chuỗi, giảm kích thước tài nguyên tải xuống hoặc trì hoãn tải xuống các tài nguyên không cần thiết để cải thiện tốc độ tải trang."
2635
2623
  },
2636
2624
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2637
- "message": "Các yêu cầu đang chặn quá trình kết xuất ban đầu của trang, điều này có thể làm trễ LCP. [Việc hoãn hoặc dùng cùng dòng](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) có thể di chuyển các yêu cầu mạng này ra khỏi đường dẫn quan trọng."
2625
+ "message": "Các yêu cầu đang chặn quá trình kết xuất ban đầu của trang, điều này có thể làm trễ LCP. [Việc hoãn hoặc dùng cùng dòng](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources) có thể di chuyển các yêu cầu mạng này ra khỏi đường dẫn quan trọng."
2638
2626
  },
2639
2627
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
2640
2628
  "message": "Thời lượng"
@@ -2682,7 +2670,7 @@
2682
2670
  "message": "Kích thước cần chuyển"
2683
2671
  },
2684
2672
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2685
- "message": "Mã của bên thứ ba có thể tác động đáng kể đến hiệu suất tải. [Giảm và trì hoãn việc tải mã của bên thứ ba](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) để ưu tiên nội dung trên trang của bạn."
2673
+ "message": "Mã của bên thứ ba có thể tác động đáng kể đến hiệu suất tải. [Giảm và trì hoãn việc tải mã của bên thứ ba](https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/) để ưu tiên nội dung trên trang của bạn."
2686
2674
  },
2687
2675
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
2688
2676
  "message": "Không tìm thấy bên thứ ba nào"