Performance
· 17 checks — Lighthouse + waterfall + sustainability rolled into one auditable list.Performance-focused optimization plan with CWV assessment, top offenders, and time estimates
First Contentful Paint First Contentful Paint — how long until the browser renders the first piece of content. Under 1.8s is good.
7.94 s
Largest Contentful Paint Largest Contentful Paint — how long until the largest visible element loads. Under 2.5s is good.
17.64 s
Total Blocking Time Total Blocking Time — total time the main thread was blocked, preventing user input. Under 200ms is good.
391 ms
Cumulative Layout Shift Cumulative Layout Shift — measures visual stability. How much the page layout shifts during loading. Under 0.1 is good.
0.000
Speed Index Speed Index — how quickly content is visually displayed during load. Under 3.4s is good.
9.10 s
Time to Interactive Time to Interactive — how long until the page is fully interactive and responds to user input. Under 3.8s is good.
17.98 s
Page Load Progression
FPage Weight BudgetAction3.8 MB transferred, 107 requestsFIX
Convert images to WebP/AVIF and resize to display dimensions to reduce transfer size.
Image bandwidth is high — modern formats (WebP/AVIF) and resizing typically cut it 50%+.
Source: web.dev
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
JavaScript bundle is large — code-split routes and lazy-load off-screen components to defer.
Source: web.dev
Remove unused CSS rules with tools like PurgeCSS to reduce stylesheet size.
CSS bundle is large — purge unused styles (PurgeCSS, Tailwind JIT) to reduce CSS payload.
Source: web.dev
Each request adds latency. Bundle small files, use sprites, or eliminate unnecessary requests.
High HTTP request count — bundling, sprite-ing, and HTTP/2 server push can reduce per-request overhead.
Source: web.dev
DJS Execution CostAction3234ms total JS executionFIX
Main Thread Breakdown
| Script | Total | Scripting | Parse/Compile | Party |
|---|---|---|---|---|
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/loader/config.js&/o/frontend-js-web/loader/loader.js&/o/frontend-js-web/aui/aui/aui.js&/o/frontend-js-web/aui/aui-base-html5-shiv/aui-base-html5-shiv.js&/o/frontend-js-web/liferay/browser_selectors.js&/o/frontend-js-web/liferay/modules.js&/o/frontend-js-web/liferay/aui_sandbox.js&/o/frontend-js-web/misc/svg4everybody.js&/o/frontend-js-web/aui/arraylist-add/arraylist-add.js&/o/frontend-js-web/aui/arraylist-filter/arraylist-filter.js&/o/frontend-js-web/aui/arraylist/arraylist.js&/o/frontend-js-web/aui/array-extras/array-extras.js&/o/frontend-js-web/aui/array-invoke/array-invoke.js&/o/frontend-js-web/aui/attribute-base/attribute-base.js&/o/frontend-js-web/aui/attribute-complex/attribute-complex.js&/o/frontend-js-web/aui/attribute-core/attribute-core.js&/o/frontend-js-web/aui/attribute-observable/attribute-observable.js&/o/frontend-js-web/aui/attribute-extras/attribute-extras.js&/o/frontend-js-web/aui/base-base/base-base.js&/o/frontend-js-web/aui/base-pluginhost/base-pluginhost.js&/o/frontend-js-web/aui/classnamemanager/classnamemanager.js&/o/frontend-js-web/aui/datatype-xml-format/datatype-xml-format.js&/o/frontend-js-web/aui/datatype-xml-parse/datatype-xml-parse.js&/o/frontend-js-web/aui/dom-base/dom-base.js&/o/frontend-js-web/aui/dom-core/dom-core.js&/o/frontend-js-web/aui/dom-screen/dom-screen.js&/o/frontend-js-web/aui/dom-style/dom-style.js&/o/frontend-js-web/aui/event-base/event-base.js&/o/frontend-js-web/aui/event-custom-base/event-custom-base.js&/o/frontend-js-web/aui/event-custom-complex/event-custom-complex.js&/o/frontend-js-web/aui/event-delegate/event-delegate.js&/o/frontend-js-web/aui/event-focus/event-focus.js&/o/frontend-js-web/aui/event-hover/event-hover.js&/o/frontend-js-web/aui/event-key/event-key.js&/o/frontend-js-web/aui/event-mouseenter/event-mouseenter.js&/o/frontend-js-web/aui/event-mousewheel/event-mousewheel.js | 779ms | 290ms | 22ms | 1st |
| https://garanteprivacy.it/ | 745ms | 34ms | 12ms | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1746441141415&/o/frontend-js-jquery-web/jquery/jquery.min.js&/o/frontend-js-jquery-web/jquery/bootstrap.bundle.min.js&/o/frontend-js-jquery-web/jquery/collapsible_search.js&/o/frontend-js-jquery-web/jquery/fm.js&/o/frontend-js-jquery-web/jquery/form.js&/o/frontend-js-jquery-web/jquery/popper.min.js&/o/frontend-js-jquery-web/jquery/side_navigation.js | 741ms | 331ms | 20ms | 1st |
| Unattributable | 625ms | 44ms | 0ms | 3rd |
| https://garanteprivacy.it/combo/?browserId=other&minifierType=&languageId=it_IT&b=7201&t=1724232991190&/o/js/resolved-module/frontend-taglib-clay$clay-icon@2.18.1/lib/ClayIcon.js&/o/js/resolved-module/frontend-taglib-clay$clay-button@2.18.1/lib/ClayButton.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-button@2.18.1/lib/ClayButton.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlertBase.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlertBase.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlert.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlert.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayStripe.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayStripe.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayToast.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayToast.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/all/alert.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/toast/commands/OpenToast.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/throttle.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/index.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/surface/Surface.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/util/Utils.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/app/App.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/EventScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/ActionURLScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/RenderURLScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/init.es.js | 122ms | 114ms | 7ms | 1st |
| https://garanteprivacy.it/o/gpdp5-theme/js/jquery-ui.js | 100ms | 36ms | 62ms | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/aui/aui-base-lang/aui-base-lang.js&/o/frontend-js-web/aui/aui-classnamemanager/aui-classnamemanager.js&/o/frontend-js-web/aui/aui-component/aui-component.js&/o/frontend-js-web/aui/aui-debounce/aui-debounce.js&/o/frontend-js-web/aui/aui-delayed-task-deprecated/aui-delayed-task-deprecated.js&/o/frontend-js-web/aui/aui-event-base/aui-event-base.js&/o/frontend-js-web/aui/aui-event-input/aui-event-input.js&/o/frontend-js-web/aui/aui-form-validator/aui-form-validator.js&/o/frontend-js-web/aui/aui-node-base/aui-node-base.js&/o/frontend-js-web/aui/aui-node-html5/aui-node-html5.js&/o/frontend-js-web/aui/aui-selector/aui-selector.js&/o/frontend-js-web/aui/aui-timer/aui-timer.js&/o/frontend-js-web/liferay/dependency.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/language.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/util.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portal.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/frontend-js-web/liferay/form.js&/o/frontend-js-web/liferay/form_placeholders.js&/o/frontend-js-web/liferay/icon.js&/o/frontend-js-web/liferay/menu.js&/o/frontend-js-web/liferay/notice.js&/o/frontend-js-web/liferay/poller.js&/o/frontend-js-web/aui/async-queue/async-queue.js&/o/frontend-js-web/aui/base-build/base-build.js&/o/frontend-js-web/aui/cookie/cookie.js&/o/frontend-js-web/aui/event-touch/event-touch.js&/o/frontend-js-web/aui/overlay/overlay.js&/o/frontend-js-web/aui/querystring-stringify/querystring-stringify.js&/o/frontend-js-web/aui/widget-child/widget-child.js&/o/frontend-js-web/aui/widget-position-align/widget-position-align.js&/o/frontend-js-web/aui/widget-position-constrain/widget-position-constrain.js&/o/frontend-js-web/aui/widget-position/widget-position.js | 67ms | 43ms | 23ms | 1st |
| https://cdn-eu.readspeaker.com/script/7205/webReader/webReader.js?pids=wr | 55ms | 27ms | 7ms | 3rd |
FJS BundlesAction29 scripts, 600 KB unusedFIX
Downloaded but never executed on this page.
| Script | Size | Unused | Minified | Party |
|---|---|---|---|---|
| https://garanteprivacy.it/o/gpdp5-theme/js/jquery-ui.js | 245 KB | 205 KB (84%) | ✗ | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/aui/aui-base-lang/aui-base-lang.js&/o/frontend-js-web/aui/aui-classnamemanager/aui-classnamemanager.js&/o/frontend-js-web/aui/aui-component/aui-component.js&/o/frontend-js-web/aui/aui-debounce/aui-debounce.js&/o/frontend-js-web/aui/aui-delayed-task-deprecated/aui-delayed-task-deprecated.js&/o/frontend-js-web/aui/aui-event-base/aui-event-base.js&/o/frontend-js-web/aui/aui-event-input/aui-event-input.js&/o/frontend-js-web/aui/aui-form-validator/aui-form-validator.js&/o/frontend-js-web/aui/aui-node-base/aui-node-base.js&/o/frontend-js-web/aui/aui-node-html5/aui-node-html5.js&/o/frontend-js-web/aui/aui-selector/aui-selector.js&/o/frontend-js-web/aui/aui-timer/aui-timer.js&/o/frontend-js-web/liferay/dependency.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/language.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/util.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portal.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/frontend-js-web/liferay/form.js&/o/frontend-js-web/liferay/form_placeholders.js&/o/frontend-js-web/liferay/icon.js&/o/frontend-js-web/liferay/menu.js&/o/frontend-js-web/liferay/notice.js&/o/frontend-js-web/liferay/poller.js&/o/frontend-js-web/aui/async-queue/async-queue.js&/o/frontend-js-web/aui/base-build/base-build.js&/o/frontend-js-web/aui/cookie/cookie.js&/o/frontend-js-web/aui/event-touch/event-touch.js&/o/frontend-js-web/aui/overlay/overlay.js&/o/frontend-js-web/aui/querystring-stringify/querystring-stringify.js&/o/frontend-js-web/aui/widget-child/widget-child.js&/o/frontend-js-web/aui/widget-position-align/widget-position-align.js&/o/frontend-js-web/aui/widget-position-constrain/widget-position-constrain.js&/o/frontend-js-web/aui/widget-position/widget-position.js | 156 KB | 118 KB (76%) | ✓ | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1746441141415&/o/frontend-js-jquery-web/jquery/jquery.min.js&/o/frontend-js-jquery-web/jquery/bootstrap.bundle.min.js&/o/frontend-js-jquery-web/jquery/collapsible_search.js&/o/frontend-js-jquery-web/jquery/fm.js&/o/frontend-js-jquery-web/jquery/form.js&/o/frontend-js-jquery-web/jquery/popper.min.js&/o/frontend-js-jquery-web/jquery/side_navigation.js | 125 KB | 87 KB (70%) | ✓ | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/aui/event-outside/event-outside.js&/o/frontend-js-web/aui/event-resize/event-resize.js&/o/frontend-js-web/aui/event-simulate/event-simulate.js&/o/frontend-js-web/aui/event-synthetic/event-synthetic.js&/o/frontend-js-web/aui/intl/intl.js&/o/frontend-js-web/aui/io-base/io-base.js&/o/frontend-js-web/aui/io-form/io-form.js&/o/frontend-js-web/aui/io-queue/io-queue.js&/o/frontend-js-web/aui/io-upload-iframe/io-upload-iframe.js&/o/frontend-js-web/aui/io-xdr/io-xdr.js&/o/frontend-js-web/aui/json-parse/json-parse.js&/o/frontend-js-web/aui/json-stringify/json-stringify.js&/o/frontend-js-web/aui/node-base/node-base.js&/o/frontend-js-web/aui/node-core/node-core.js&/o/frontend-js-web/aui/node-event-delegate/node-event-delegate.js&/o/frontend-js-web/aui/node-event-simulate/node-event-simulate.js&/o/frontend-js-web/aui/node-focusmanager/node-focusmanager.js&/o/frontend-js-web/aui/node-pluginhost/node-pluginhost.js&/o/frontend-js-web/aui/node-screen/node-screen.js&/o/frontend-js-web/aui/node-style/node-style.js&/o/frontend-js-web/aui/oop/oop.js&/o/frontend-js-web/aui/plugin/plugin.js&/o/frontend-js-web/aui/pluginhost-base/pluginhost-base.js&/o/frontend-js-web/aui/pluginhost-config/pluginhost-config.js&/o/frontend-js-web/aui/querystring-stringify-simple/querystring-stringify-simple.js&/o/frontend-js-web/aui/queue-promote/queue-promote.js&/o/frontend-js-web/aui/selector-css2/selector-css2.js&/o/frontend-js-web/aui/selector-css3/selector-css3.js&/o/frontend-js-web/aui/selector-native/selector-native.js&/o/frontend-js-web/aui/selector/selector.js&/o/frontend-js-web/aui/widget-base/widget-base.js&/o/frontend-js-web/aui/widget-htmlparser/widget-htmlparser.js&/o/frontend-js-web/aui/widget-skin/widget-skin.js&/o/frontend-js-web/aui/widget-uievents/widget-uievents.js&/o/frontend-js-web/aui/yui-throttle/yui-throttle.js&/o/frontend-js-web/aui/aui-base-core/aui-base-core.js | 63 KB | 51 KB (82%) | ✓ | 1st |
| https://garanteprivacy.it/combo/?browserId=other&minifierType=&languageId=it_IT&b=7201&t=1724232991190&/o/js/resolved-module/frontend-js-metal-web$metal-incremental-dom@2.16.8/lib/all/incremental-dom.js&/o/js/resolved-module/frontend-js-metal-web$metal-soy-bundle@2.16.8/lib/bundle.js&/o/js/resolved-module/frontend-js-metal-web$metal-soy@2.16.8/lib/SoyAop.js&/o/js/resolved-module/frontend-js-metal-web$metal-soy@2.16.8/lib/Soy.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/modal/Modal.soy.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/modal/Modal.es.js&/o/js/resolved-module/frontend-js-metal-web$metal-position@2.1.2/lib/Geometry.js&/o/js/resolved-module/frontend-js-metal-web$metal-position@2.1.2/lib/Position.js&/o/js/resolved-module/frontend-js-metal-web$metal-position@2.1.2/lib/Align.js&/o/js/resolved-module/frontend-js-metal-web$metal-position@2.1.2/lib/all/position.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/helpers/DragAutoScroll.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/helpers/DragScrollDelta.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/helpers/DragShim.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/Drag.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/DragDrop.js&/o/js/resolved-module/frontend-js-metal-web$metal-drag-drop@3.3.1/lib/all/drag.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/slider/Slider.soy.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/slider/Slider.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/keyboard-focus/KeyboardFocusManager.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/treeview/Treeview.soy.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/compat/treeview/Treeview.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/util/form/object_to_form_data.es.js | 66 KB | 38 KB (59%) | ✓ | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/loader/config.js&/o/frontend-js-web/loader/loader.js&/o/frontend-js-web/aui/aui/aui.js&/o/frontend-js-web/aui/aui-base-html5-shiv/aui-base-html5-shiv.js&/o/frontend-js-web/liferay/browser_selectors.js&/o/frontend-js-web/liferay/modules.js&/o/frontend-js-web/liferay/aui_sandbox.js&/o/frontend-js-web/misc/svg4everybody.js&/o/frontend-js-web/aui/arraylist-add/arraylist-add.js&/o/frontend-js-web/aui/arraylist-filter/arraylist-filter.js&/o/frontend-js-web/aui/arraylist/arraylist.js&/o/frontend-js-web/aui/array-extras/array-extras.js&/o/frontend-js-web/aui/array-invoke/array-invoke.js&/o/frontend-js-web/aui/attribute-base/attribute-base.js&/o/frontend-js-web/aui/attribute-complex/attribute-complex.js&/o/frontend-js-web/aui/attribute-core/attribute-core.js&/o/frontend-js-web/aui/attribute-observable/attribute-observable.js&/o/frontend-js-web/aui/attribute-extras/attribute-extras.js&/o/frontend-js-web/aui/base-base/base-base.js&/o/frontend-js-web/aui/base-pluginhost/base-pluginhost.js&/o/frontend-js-web/aui/classnamemanager/classnamemanager.js&/o/frontend-js-web/aui/datatype-xml-format/datatype-xml-format.js&/o/frontend-js-web/aui/datatype-xml-parse/datatype-xml-parse.js&/o/frontend-js-web/aui/dom-base/dom-base.js&/o/frontend-js-web/aui/dom-core/dom-core.js&/o/frontend-js-web/aui/dom-screen/dom-screen.js&/o/frontend-js-web/aui/dom-style/dom-style.js&/o/frontend-js-web/aui/event-base/event-base.js&/o/frontend-js-web/aui/event-custom-base/event-custom-base.js&/o/frontend-js-web/aui/event-custom-complex/event-custom-complex.js&/o/frontend-js-web/aui/event-delegate/event-delegate.js&/o/frontend-js-web/aui/event-focus/event-focus.js&/o/frontend-js-web/aui/event-hover/event-hover.js&/o/frontend-js-web/aui/event-key/event-key.js&/o/frontend-js-web/aui/event-mouseenter/event-mouseenter.js&/o/frontend-js-web/aui/event-mousewheel/event-mousewheel.js | 130 KB | 33 KB (26%) | ✓ | 1st |
| https://garanteprivacy.it/combo?browserId=other&minifierType=js&languageId=it_IT&b=7201&t=1724232991190&/o/frontend-js-web/aui/widget-stack/widget-stack.js&/o/frontend-js-web/aui/widget-stdmod/widget-stdmod.js&/o/frontend-js-web/aui/aui-aria/aui-aria.js&/o/frontend-js-web/aui/aui-io-plugin-deprecated/aui-io-plugin-deprecated.js&/o/frontend-js-web/aui/aui-io-request/aui-io-request.js&/o/frontend-js-web/aui/aui-loading-mask-deprecated/aui-loading-mask-deprecated.js&/o/frontend-js-web/aui/aui-overlay-base-deprecated/aui-overlay-base-deprecated.js&/o/frontend-js-web/aui/aui-overlay-context-deprecated/aui-overlay-context-deprecated.js&/o/frontend-js-web/aui/aui-overlay-manager-deprecated/aui-overlay-manager-deprecated.js&/o/frontend-js-web/aui/aui-overlay-mask-deprecated/aui-overlay-mask-deprecated.js&/o/frontend-js-web/aui/aui-parse-content/aui-parse-content.js&/o/frontend-js-web/liferay/layout_exporter.js&/o/frontend-js-web/liferay/session.js&/o/frontend-js-web/liferay/deprecated.js | 33 KB | 25 KB (79%) | ✓ | 1st |
| https://garanteprivacy.it/combo/?browserId=other&minifierType=&languageId=it_IT&b=7201&t=1724232991190&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/route/Route.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/cacheable/Cacheable.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/screen/Screen.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/surface/Surface.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/app/App.js&/o/js/resolved-module/frontend-js-metal-web$metal-promise@2.0.1/lib/promise/Promise.js&/o/js/resolved-module/frontend-js-metal-web$metal-ajax@2.1.1/lib/Ajax.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/errors/errors.js&/o/js/resolved-module/frontend-js-metal-web$metal-useragent@3.0.1/lib/UA.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/screen/RequestScreen.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/screen/HtmlScreen.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/app/AppDataAttributeHandler.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/app/dataAttributeHandler.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/app/version.js&/o/js/resolved-module/frontend-js-spa-web$senna@2.7.9/lib/senna.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/aop/AOP.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/debounce/debounce.es.js&/o/js/resolved-module/frontend-js-metal-web$metal-component@2.16.8/lib/events/events.js&/o/js/resolved-module/frontend-js-metal-web$metal-component@2.16.8/lib/sync/sync.js&/o/js/resolved-module/frontend-js-metal-web$metal-state@2.16.8/lib/validators.js&/o/js/resolved-module/frontend-js-metal-web$metal-state@2.16.8/lib/Config.js&/o/js/resolved-module/frontend-js-metal-web$metal-state@2.16.8/lib/State.js&/o/js/resolved-module/frontend-js-metal-web$metal-state@2.16.8/lib/all/state.js&/o/js/resolved-module/frontend-js-metal-web$metal-component@2.16.8/lib/ComponentDataManager.js | 49 KB | 23 KB (48%) | ✓ | 1st |
| https://garanteprivacy.it/combo/?browserId=other&minifierType=&languageId=it_IT&b=7201&t=1724232991190&/o/js/resolved-module/frontend-taglib-clay$clay-icon@2.18.1/lib/ClayIcon.js&/o/js/resolved-module/frontend-taglib-clay$clay-button@2.18.1/lib/ClayButton.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-button@2.18.1/lib/ClayButton.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlertBase.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlertBase.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlert.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayAlert.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayStripe.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayStripe.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayToast.soy.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/ClayToast.js&/o/js/resolved-module/frontend-taglib-clay$clay-alert@2.18.1/lib/all/alert.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/toast/commands/OpenToast.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/liferay/throttle.es.js&/o/js/resolved-module/frontend-js-web@3.0.35/index.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/surface/Surface.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/util/Utils.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/app/App.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/EventScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/ActionURLScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/screen/RenderURLScreen.es.js&/o/js/resolved-module/frontend-js-spa-web@3.0.22/liferay/init.es.js | 42 KB | 20 KB (49%) | ✓ | 1st |
| https://cdn-eu.readspeaker.com/script/7205/webReader/webReader.js?pids=wr | 28 KB | — | ✓ | 3rd |
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
DPage Weight InventoryAction107 resources · 3.8 MB · 600 KB savings availableFIX
~599.8 KiB of savings available
| # | Resource | Type | Size | Cache | Unused | 3rd party | Issues |
|---|---|---|---|---|---|---|---|
| — | — | ||||||
| 107 resources | 3.8 MiB | ||||||
DHTTP CachingActionno-store (uncacheable)FIX
private, no-cache, no-store, must-revalidate
| Directive | Value | Meaning |
|---|---|---|
| private | — | Only browser cache, not CDN/proxy |
| no-cache | — | Cache but always revalidate first |
| no-store | — | Never cache this response |
| must-revalidate | — | Must recheck with server after expiry |
CImage OptimizationAction54 images, 0 KB saveableREVIEW
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
CGreen HostingActionWhether the site is served from green-energy infrastructureREVIEW
Green Hosting
No green hosting detected
A+Third-Party Impact3% third-party, 0 ms blockingPASS
A+Text CompressionAll text resources are compressedPASS
A+Font Loading7 fonts (113 KB)PASS
Web fonts
7
113 KB total
Render-blocking
0
of 7
Dominant font-display
swap
Most common across fonts
Font loading timeline
- Convert to woff2 for ~30% smaller file size
Optimization checklist
- Preload critical fonts (priority=high)
- Use woff2 format for all fonts
- Set font-display to swap, optional, or fallback
- Subset large fonts (≤100 KB each)
Fixing the unchecked items could save ~11 KB and ~22 ms
A+Resource CachingAll resources properly cachedPASS
A+Critical Rendering PathNo render-blocking resourcesPASS
A+Resource HintsNo optimization neededPASS
A+Render-Blocking ResourcesNo render-blocking resources detectedPASS
A+Third-Party ResourcesNo third-party resources detectedPASS
Network Waterfall107 requests over 1927msINFO
Third-Party Script CostPer-script blocking time, transfer cost, and cache headersINFO
| Script | Category | Execution | Transfer | Unused | Monthly Cost | Verdict |
|---|---|---|---|---|---|---|
Unattributable Unattributable | Other | 625ms | 0 KB | — | €7/mo | Costly |
cdn-eu.readspeaker.com cdn-eu.readspeaker.com | Other | 55ms | 28 KB | — | €1/mo | Optional |
These scripts may cost more than they're worth
- Unattributable adds 625ms and costs ~€7/month
Unattributable takes 625ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev