netzbegruenung / green-spider

Hilft Dir dabei, Deine BÜNDNIS 90/DIE GRÜNEN Website zu optimieren
https://green-spider.netzbegruenung.de/
Apache License 2.0
20 stars 7 forks source link

Kriterium: Ladezeit bzw. Ladeverhalten #11

Open marians opened 6 years ago

marians commented 6 years ago

Ladezeiten haben negativen Einfluss auf die User Experience und das Ranking in Suchmaschinen.

Wir sollten grundlegende Daten dazu sammeln, wie schnell eine Seite lädt. Dies kann Anlass dazu geben, den Aufbau einer Site zu prüfen und ggf. Optimierungen vorzunehmen.

marians commented 6 years ago

Ein paar Links:

marians commented 6 years ago

Hier ein Beispiel für die Ausgabe der Google PageSpeed API:

Click to expand

```json { "captchaResult": "CAPTCHA_NOT_NEEDED", "kind": "pagespeedonline#result", "id": "https://gruene-mitte.de/", "responseCode": 200, "title": "Willkommen - Bündnis 90 Die Grünen Berlin-MitteGrüne Mitte", "ruleGroups": { "SPEED": { "score": 51 } }, "loadingExperience": { "initial_url": "https://gruene-mitte.de/" }, "pageStats": { "numberResources": 100, "numberHosts": 10, "totalRequestBytes": "10558", "numberStaticResources": 67, "htmlResponseBytes": "98074", "overTheWireResponseBytes": "1911018", "cssResponseBytes": "239250", "imageResponseBytes": "739343", "javascriptResponseBytes": "1023757", "otherResponseBytes": "57675", "numberJsResources": 24, "numberCssResources": 13, "numTotalRoundTrips": 19, "numRenderBlockingRoundTrips": 6 }, "formattedResults": { "locale": "en_US", "ruleResults": { "AvoidLandingPageRedirects": { "localizedRuleName": "Avoid landing page redirects", "ruleImpact": 0.0, "groups": [ "SPEED" ], "summary": { "format": "Your page has no redirects. Learn more about {{BEGIN_LINK}}avoiding landing page redirects{{END_LINK}}.", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/AvoidRedirects" } ] } }, "EnableGzipCompression": { "localizedRuleName": "Enable compression", "ruleImpact": 64.92500000000001, "groups": [ "SPEED" ], "summary": { "format": "Compressing resources with gzip or deflate can reduce the number of bytes sent over the network." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Enable compression{{END_LINK}} for the following resources to reduce their transfer size by {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/EnableCompression" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "634KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "74%" } ] }, "urls": [ { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/js/vendor/moment-timezone-with-data.min.js?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "154.6KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "85%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/functions/kal3000//map/leaflet.js?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "89.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "73%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "63.9KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "82%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/jquery/jquery.js?ver=1.12.4" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "61.9KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "65%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/css/style.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "48.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "77%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/instagram-feed/js/sb-instagram.min.js?ver=1.8.2" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "44.6KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "72%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/js/vendor/moment.min.js?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "33.6KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "66%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/js/vendor/jquery.qtip.min.js?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "27.5KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "63%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/css/font-awesome.min.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "17.9KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "77%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox.pack.js?ver=2.1.4" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "13.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "62%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/modernizr.custom.min.js?ver=2.5.3" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "8.7KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "58%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/default-calendar-grid.min.css?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "8.2KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "80%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/functions/kal3000//map/leaflet.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "7.5KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "75%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/wp-emoji-release.min.js?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "7.3KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "64%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/instagram-feed/css/sb-instagram.min.css?ver=1.8.2" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "7.3KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "80%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/default-calendar-list.min.css?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "7.2KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "79%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/vendor/jquery.qtip.min.css?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "6.7KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "75%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "5.9KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "60%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/js/vendor/imagesloaded.pkgd.min.js?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "3.7KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "67%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/js/default-calendar.min.js?ver=3.1.14" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "3.2KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "64%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/responsiveTabs.min.js?ver=2.1.4" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "3.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "74%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "70%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/scripts.js?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "60%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox-buttons.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "1.7KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "70%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/js/localization/jquery.validate/messages_de.js" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "690B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "61%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/wp-embed.min.js?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "647B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "47%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/css/mailerlite_forms.css?ver=1.2.4" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "448B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "62%" } ] } } ] } ] }, "LeverageBrowserCaching": { "localizedRuleName": "Leverage browser caching", "ruleImpact": 10.885416666666668, "groups": [ "SPEED" ], "summary": { "format": "Setting an expiry date or a maximum age in the HTTP headers for static resources instructs the browser to load previously downloaded resources from local disk rather than over the network." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Leverage browser caching{{END_LINK}} for the following cacheable resources:", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/LeverageBrowserCaching" } ] }, "urls": [ { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/js/localization/jquery.validate/messages_de.js" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/fonts/arvo_gruen.woff" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/fonts/arvo_regular.woff" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/fonts/ptsans-bold.woff" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/fonts/ptsans-regular.woff" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/images/body_bg.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/images/logo.png" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/images/nav_ul2.png" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2015/09/cropped-higr_quadr_1600x1600_rgb-1600x1600_skyline.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2016/09/Presse-400x300.png" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2017/06/Nikolaiviertel_by_Birgit_pixelio-Kopie-400x259.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/02/Afrikanisches-Viertel-400x148.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/02/Afrikanisches-Viertel-768x284.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/03/Uferstudios-Winter-c-Seema-Mehta-400x259.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Kiez-Gr%C3%BCn-400x302.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Kiez-Gr%C3%BCn-768x580.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Stammtisch_Molina-400x210.jpg" } ] } }, { "result": { "format": "{{URL}} (expiration not specified)", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Stammtisch_Molina-768x402.jpg" } ] } }, { "result": { "format": "{{URL}} ({{LIFETIME}})", "args": [ { "type": "URL", "key": "URL", "value": "https://cdn.syndication.twimg.com/widgets/timelines/675300164748341248?callback=__twttr.callbacks.tl_i0_675300164748341248_old&dnt=false&domain=gruene-mitte.de&lang=de&suppress_response_codes=true&t=1693303&tz=GMT-0700" }, { "type": "DURATION", "key": "LIFETIME", "value": "5 minutes" } ] } }, { "result": { "format": "{{URL}} ({{LIFETIME}})", "args": [ { "type": "URL", "key": "URL", "value": "https://syndication.twitter.com/settings" }, { "type": "DURATION", "key": "LIFETIME", "value": "10 minutes" } ] } }, { "result": { "format": "{{URL}} ({{LIFETIME}})", "args": [ { "type": "URL", "key": "URL", "value": "https://platform.twitter.com/widgets.js" }, { "type": "DURATION", "key": "LIFETIME", "value": "30 minutes" } ] } }, { "result": { "format": "{{URL}} ({{LIFETIME}})", "args": [ { "type": "URL", "key": "URL", "value": "https://www.google-analytics.com/analytics.js" }, { "type": "DURATION", "key": "LIFETIME", "value": "2 hours" } ] } } ] } ] }, "MainResourceServerResponseTime": { "localizedRuleName": "Reduce server response time", "ruleImpact": 3.43, "groups": [ "SPEED" ], "urlBlocks": [ { "header": { "format": "In our test, your server responded in {{RESPONSE_TIME}}. There are many factors that can slow down your server response time. {{BEGIN_LINK}}Please read our recommendations{{END_LINK}} to learn how you can monitor and measure where your server is spending the most time.", "args": [ { "type": "DURATION", "key": "RESPONSE_TIME", "value": "0.54 seconds" }, { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/Server" } ] } } ] }, "MinifyCss": { "localizedRuleName": "Minify CSS", "ruleImpact": 1.5221, "groups": [ "SPEED" ], "summary": { "format": "Compacting CSS code can save many bytes of data and speed up download and parse times." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Minify CSS{{END_LINK}} for the following resources to reduce their size by {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/MinifyResources" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "14.9KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "20%" } ] }, "urls": [ { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/css/style.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "12.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "20%" } ] } }, { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/functions/kal3000//map/leaflet.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "20%" } ] } }, { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox.css?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "719B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "18%" } ] } }, { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/css/mailerlite_forms.css?ver=1.2.4" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "142B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "20%" } ] } } ] } ] }, "MinifyHTML": { "localizedRuleName": "Minify HTML", "ruleImpact": 0.8326, "groups": [ "SPEED" ], "summary": { "format": "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up download and parse times." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Minify HTML{{END_LINK}} for the following resources to reduce their size by {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/MinifyResources" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "8.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "11%" } ] }, "urls": [ { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "8.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "11%" } ] } } ] } ] }, "MinifyJavaScript": { "localizedRuleName": "Minify JavaScript", "ruleImpact": 0.23800000000000002, "groups": [ "SPEED" ], "summary": { "format": "Compacting JavaScript code can save many bytes of data and speed up downloading, parsing, and execution time." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Minify JavaScript{{END_LINK}} for the following resources to reduce their size by {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/MinifyResources" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2.3KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "41%" } ] }, "urls": [ { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/scripts.js?ver=4.9.5" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2.2KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "47%" } ] } }, { "result": { "format": "Minifying {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/js/localization/jquery.validate/messages_de.js" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "172B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "16%" } ] } } ] } ] }, "MinimizeRenderBlockingResources": { "localizedRuleName": "Eliminate render-blocking JavaScript and CSS in above-the-fold content", "ruleImpact": 12.0, "groups": [ "SPEED" ], "summary": { "format": "Your page has {{NUM_SCRIPTS}} blocking script resources and {{NUM_CSS}} blocking CSS resources. This causes a delay in rendering your page.", "args": [ { "type": "INT_LITERAL", "key": "NUM_SCRIPTS", "value": "7" }, { "type": "INT_LITERAL", "key": "NUM_CSS", "value": "10" } ] }, "urlBlocks": [ { "header": { "format": "None of the above-the-fold content on your page could be rendered without waiting for the following resources to load. Try to defer or asynchronously load blocking resources, or inline the critical portions of those resources directly in the HTML." } }, { "header": { "format": "{{BEGIN_LINK}}Remove render-blocking JavaScript{{END_LINK}}:", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/BlockingJS" } ] }, "urls": [ { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/jquery/jquery.js?ver=1.12.4" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/functions/kal3000//map/leaflet.js?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://static.mailerlite.com/js/jquery.validate.min.js?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/modernizr.custom.min.js?ver=2.5.3" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox.pack.js?ver=2.1.4" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/responsiveTabs.min.js?ver=2.1.4" } ] } } ] }, { "header": { "format": "{{BEGIN_LINK}}Optimize CSS Delivery{{END_LINK}} of the following:", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery" } ] }, "urls": [ { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/instagram-feed/css/sb-instagram.min.css?ver=1.8.2" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/official-mailerlite-sign-up-forms/assets/css/mailerlite_forms.css?ver=1.2.4" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/functions/kal3000//map/leaflet.css?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/vendor/jquery.qtip.min.css?ver=3.1.14" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/default-calendar-grid.min.css?ver=3.1.14" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/plugins/google-calendar-events/assets/css/default-calendar-list.min.css?ver=3.1.14" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/css/font-awesome.min.css?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/css/style.css?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox.css?ver=4.9.5" } ] } }, { "result": { "format": "{{URL}}", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/js/libs/fancybox/jquery.fancybox-buttons.css?ver=4.9.5" } ] } } ] } ] }, "OptimizeImages": { "localizedRuleName": "Optimize images", "ruleImpact": 10.356600000000004, "groups": [ "SPEED" ], "summary": { "format": "Properly formatting and compressing images can save many bytes of data." }, "urlBlocks": [ { "header": { "format": "{{BEGIN_LINK}}Optimize the following images{{END_LINK}} to reduce their size by {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/OptimizeImages" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "101.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "48%" } ] }, "urls": [ { "result": { "format": "Compressing and resizing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Stammtisch_Molina-768x402.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "37.3KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "72%" } ] } }, { "result": { "format": "Compressing and resizing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2018/04/Kiez-Gr%C3%BCn-768x580.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "36.8KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "69%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/uploads/2015/09/cropped-higr_quadr_1600x1600_rgb-1600x1600_skyline.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "5.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "21%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/Daqh9OGW4AEjRLr?format=jpg&name=240x240" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "3.1KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "29%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/DapglOKWsAA65oi?format=jpg&name=240x240" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "2.6KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "17%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/images/logo.png" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "1.3KiB" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "14%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/891748883088453632/gWrk6-1s_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "990B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "50%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/872056104246796289/KTFYaA3m_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "968B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "46%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/892390591484526592/5X9JazJn_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "965B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "45%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/954726221853667330/-pkdVG5o_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "941B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "49%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/804663691958484992/CMlw2g5i_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "929B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "48%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/884670927279190016/VhXxtPlG_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "929B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "48%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/855282163574427648/RIoRq0U-_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "923B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "50%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/896996367788363776/f3aEOjEX_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "920B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "41%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/900496325795622914/-7Ngidb6_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "911B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "45%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/840132493118337024/p9ksl9dJ_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "906B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "42%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/890217580694319107/N_p6Oo6T_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "904B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "43%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://gruene-mitte.de/wp-content/themes/urwahl3000/lib/images/nav_ul2.png" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "861B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "83%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/671347182688198656/ZCMXbbB__normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "708B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "35%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/profile_images/592983424660590592/txUypjO9_normal.jpg" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "676B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "45%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/DahCyUWW0AAKUG2?format=jpg&name=120x120" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "626B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "12%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/DarM9moWsAAO0sL?format=jpg&name=120x120" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "601B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "13%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/DahCyUhX0AEwvGP?format=jpg&name=120x120" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "591B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "13%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/media/DarM9mnW4AEUOSt?format=jpg&name=120x120" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "574B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "19%" } ] } }, { "result": { "format": "Compressing {{URL}} could save {{SIZE_IN_BYTES}} ({{PERCENTAGE}} reduction).", "args": [ { "type": "URL", "key": "URL", "value": "https://pbs.twimg.com/ext_tw_video_thumb/985788067108749312/pu/img/cTmmoxjJO8-Cqf6o?format=jpg&name=240x240" }, { "type": "BYTES", "key": "SIZE_IN_BYTES", "value": "259B" }, { "type": "PERCENTAGE", "key": "PERCENTAGE", "value": "11%" } ] } } ] } ] }, "PrioritizeVisibleContent": { "localizedRuleName": "Prioritize visible content", "ruleImpact": 0.0, "groups": [ "SPEED" ], "summary": { "format": "You have the above-the-fold content properly prioritized. Learn more about {{BEGIN_LINK}}prioritizing visible content{{END_LINK}}.", "args": [ { "type": "HYPERLINK", "key": "LINK", "value": "https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent" } ] } } } }, "version": { "major": 1, "minor": 15 }, "screenshot": { "mime_type": "image/jpeg", "data": "_9j_4AAQSkZJRgABAQAAAQABAAD_2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj_2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj_wAARCACzAUADASIAAhEBAxEB_8QAHAAAAAcBAQAAAAAAAAAAAAAAAAECAwQFBgcI_8QAVBAAAQMCAwQEBwkKCwgDAAAAAQACAwQRBRIhBhMxQSJRYdEHFBZUcZGTFRcyUoGSoaLSIzRCRFNicpSxwSQzNVVWY3ODlbLhCDZDRWR0gvAmwuL_xAAaAQACAwEBAAAAAAAAAAAAAAAAAgEDBQQG_8QAOREAAgECAgcFBgUEAwEAAAAAAAECAxEEUQUSExQhUqEVMUGBsSIzcZHR4SMyNGHwFkJTwQYkovH_2gAMAwEAAhEDEQA_AOCILYnYxuazax9v0B3pQ2KB_HH_ADB3rh32jmZGvExiC2g2IBP34_5g70sbCg_jrvmDvUb9Q5vUjaRMQgtyNhG3t48_2Y70Y2BHnz_mDvUb_Q5vUjaxzMKgt15BDnXP9mO9H5At8-f7Md6N_oc3qG1jmYRBbvyBHnz_AJg70fkC29vHn-zHejtChzeobWOZg0FvR4P2n8ff7Md6V73rfP3-zHejtDD83qG2hmYBXeHYLSV1JBIccw-lnfmL4anM3IASB0gCCTa9u0da0nvfN8_f7Md6Hvet8_f7Md6O0MPzdGG2gZHGMNZhxgDMRoa3etLj4q8uyWPB2mhKfwjA_dHD56t-J4fRsilbDlqZC0ucRcW04aHXsWl978efP9mO9H73zfPn3_sx3o7Qw_N6k7aBSu2ZpmSsa7aXBC1zmtLmSvNrgm_weAsAT2hIn2dp4qR8jNocHlma3Nu2Su6WgOUEga8eVtOKvfe-bb7_AH-zHej970efv9mO9HaGH5ujDbQMljuGRYXUxRwYlRYg2SPOX0riQw8Mpvz_AHKTgmC02JwNfNjWH0DzK5jmVRLbNDQc9-dySLdi0nvet8_f7Md6Hvet8_k9mO9HaOH5ujDbQKGp2dpood4zaLB5PgdESOzXda-gB4X19Cck2ZpW0872bS4M-SJpcGCRw3mh0aSOPK1lde96PP3-zHeh73o8_f7Md6jtHD83RhtoGTxzDIsMlgZDiVFiAljzl1K4kRnm13b-5SMGwEYjh0ldLiVFR08dTHTP3zjmGcjpW6h-7ktL73g8_f7Md6Hvdtvfx59-vdjvR2jh-bow20Chfs3TMp3PG0WDPlDM4YyV2uh6NyB0tLdWupCgY1hcWGtpHQ4nRVxnjzubTOLjCdLtd69PRyWu97sefv8AZjvQ97sX-_3-zHejtHD83RhtoGWwPBYsVjdfFaCim3gY2OqcWl9wLEEdumqmeTEBvl2kwI2cW_xzhw9LeCvPe7bw8fk9mO9GPB2D_wAwk9mO9HaOH5ujDbQMbjFAzDqlkUVfSVwczMZKVxc1puRY3A10-ldu_wBnjwcbObT7N1-MbR0UmIvbVmljgEjmtjDWNcXWaQSTm59Swfvdt_nB_sx3rR7IUW0OxxqPJ3aKejbPYys3DJGOI4HK64v2qVpHD83RjQr01K77juLvBB4PG8dlDbr3s320Z8D_AIPQLu2Ttx_4sx0-euZja3wgE6bXO_w-n-yh5WeED-lrv8Pp_sqe0sNzdGdG9UMuh02PwPeDx7gPJTLfm6WYD_OpA8Cvg8I_3bh_WJvtrlXlZ4QP6Wu_w-n-yi8rfCB_S13-HwfZR2lhubow3qhl0Ore8p4PP6NwfrE320zWeBjYGKkmkp9lYZpmMc5kXjMzc7gNG3z6XOl1y7yu8IFv97XfqFP9lJO2HhAAv5Wu_UIPso7Rw-fQN6oZdCq8LGweBYbsDLjOHYU_CMRpK2KnewNmYyeORoN8kpJBBJFwdch69OHLse2B2l2vp4Ydodo56unhdnZEII42B1rZiGgXOp1PWsodhB56_wCYO9G_0H_d0ZROtBv2TDoLa-Q488f8wd6SdiR54_5g70b9Qz9RdpE1jCnWlMNvdOtJWEznZIYbkX6kMxDk206pY1N0jQthwPJPBLDiRwSGhOtGuiVisAJGiUNe5BONbbRK2KwhHfW5Smxi97m6WBbilgJWyLhNZpzRhnpSkEtyBBZ2o8l-ZSuaNRckb3Y6yjawJSO1gi4CQwcNUMg6yjzBo6XXZKRxJE5O0oZB1lKQUXIE5O0o8g6ylIIuSJLO0oZe1LRIATlQt2pQQKAE2twRApVkRCAElx6gic421AslEJJGiZEDe8IHJEZndQRlNu7E1kSKM7vihI8YcTq0JB0CTxTJImwp1Q8A6Aps1L7Ws2yJxCZPFMkhkkOGc3ALRYlLe7RRjq5v6QT7hrZS0S0IceKQTolkWTZ4KUBEB1TrXaJgJ0KxjtDoNuKdbrwTI0OqfgHRSMVjzB0U60WASGhOAKtlbDCcYb6KXguGy4nVtghjkeBZ0hjtdrb2J1Oq6C3ZnBqOipYq98Ila8OdI52TeEctTwOmizsZpGlhZKEuLfgjrw2Bq4mLlHgl4s5sNB1JQW32k2Yp20pqcMY5z3Oc9xDwI2t4knsA0ACxIT4XF08VDXplWJws8NPVmHpeyNEEF0HOA9iF-tDkgUAAcUfFJCUgBE_wW_pN_alhQ8Rm3YisRfOCfQFKab2IIIPBM4tRTHcWopikOaCASChhGUVkEAHdBBBAAQQR2QASI8VMipIXxtc6vpYyRqx4kuOw2aQlmig_nOi9Un2E2oxtVle5IcrI0UB_5nReqX7COTCAIhK6upmxEA5yyWxve2uTnY-o9SZQYKLKnim38VaeIwfznReqX7CS6hp_50ofVL9hMov-MNVlWeCb4BWZoKflilD6pfsJt1BT2_lWh9Uv2EyiyVFlY5MuFjqrU0FPb-VqD1S_YTTsPp_52oPVL9hOosZRZWXs9v6QUx56lGqI2xzZGSslaHCz475T6LgH6E646KJIhiHahNOS3Jt3WVKJRFCU1ICdanHYoaqXStL8rRxcbD5VF5K0wEwtxGkdVxmSBszXSMABLmg3I101UKLk1FeIjt4m9Pg9jjfJC_Foi8PEbZMtmtNgSCL9RPPkiHg-Go92ILhhcWmOxNjy6WugPqUPGa7CKnDJoqDBhT1EkrXF-SMWbmJdYg9EkW4cOCs48X2cZITHgT2fdA5r93Hma0NsLWdxv2626zpp7k27bJ_-voWa-Hb718xjCsJlwLHXx0-K0zT4o-d75ouiQHkBvG44Xvp2XuqrbWKoZjjm1VSypl3bScjSGx3v0QLn0-ghXz8a2ee3M7AbSkgvJjjdmOYE8-q4uiw3aHBqaav3FG2nieXyCMgCwa1oazqJJzf-lY2lMMsFHeIUbzfDxTt5oupunWWx2iUe_vb6E_ZOH_4uRijC-C5dllGYBnLT9y57WmN1ZOadrGwl5yBhJblvpa-tvSr_AB7aiepqyMPlkijY68cjSWuLS0XaRwNisyL3uVjaPw1SEp1qnDX42y-5OPr05xhRp8dXhfMPmjJsUV0OfBaZnAdoiKDrlFe6kAxqj4ohwRhAELEYBIWPuQbhnrKlxMEcbWDg0WTNabMj_tG_tUkp5SbgkWNtxSAjCII1WIGgESNQAaCK6NABhEUEAgALd7MUMNTQYa2mOGsikEja2Wphjmc2XNZjSHOBDbWtl5rEsbCYwXShr78D1IGKB1yZ4yRwuE1HExoybav8zopRcXrWv5m6oaWndsxSwS09NJVS0dVu2mGIGVzHdAmT4TXWsQOfMqLXPDsLq6yNlAaWow6njpsrIrmpuMwDeIcCZL6LGiKnzEOkaQRe4HO_AoCKnuTvGg3tfT_0q96Qjayj4f6tl_PW3WdrWXzN_tFS0EcePvoYKSKsiihj3BjY67i9mWWPkAQXNIHMAqs8I1M-Bsm5pKOGi8YaI3siiZIXbs3Dch6Ufa7W-nBZDdQAOG9YADobWvw4D1-pIMNOBds8bTb4uvBNPHwmmtW1_v8At-5EpOSat3_uv3OiV1FhrqykrpqWkZUYdBGJqRrWNFVJIxu76I0_jC8HsCr8dLsPgx2riw7DXx02Lx7sOp4y3c5L201yk7vh19pWFdDT3cN_ELC4NuPG4TckNKGMcydgNgS3KLg2vb9ysePi-6Nv_nwG1m1wXVfA3eKYjPR4xhdC3B8HcayCmdmdSRXD3ACS1tON-PBSYd5VYptPTtwrDgaLoUu5o4HOcTNdmjjlP3M8erXUrnDoKQSNHjDN2XWcABcDrTbqejLQPGI9B8UEX5_IpWPV7tP-eQylK_3Qe0bZWY9WtnjpopRUEPjpf4pp6mfmpp-rQmJ2tbLljcHMa8AOAsCE8-5Og0VUnrO6OWfeIJuTdNuKcPNNu4IRBEb6U606Jlp6ksG2isY7HbqXT_A7LqCCptNrEPSVXLuEkSWjje3qS2dqJp0SwqWVCrcNAjDe1BC9rg2UECxy1RpgFw1ukyVkTGnpXdwsEKDfBEqLfcSuKB43VU7EZL9FjR6dVHNRMX5947N6VcsNJ95esPJ945WzSeMvAe4AGwAKUytlZG0aOOuruKjSPMjy93wjxSSSQB1Lr2aaSaOnZqyTRMGIy_FZ9KkUlY6efIWNAsSqtP0UrYagOdwtZJOjHVdlxFnSjquyLGvNoo_7RqlqtrqmKSNrWPBIcDoljEmZ7ZHEXte65dlNxVkc-zk4qyLBJjcJGBzTdp4FV-I1YMYZE6-biR1dSaw2pELy2V9oyLj0oVCThrAqLcdYt0ahx18DhdzshvwKcZWU73BokFz16Kp05rwEcJLwJF9UFW4ZJmqJw99yTcAnjqrLXhZFSGo7BOOq7BoIghzSCEyLEaiKJrGbjK0WGanjcfWW3KX7q1X_AE36rF9lVIqWmqMFjmAvfr0TTJX-6UkRJyZbgdStSqZ-Fy1KeZde6tV_036rF9lF7rVV7fwb9Vi-yoRuit60uvLMTWlmS34vVdVN-qxfZTbsXquH8Gv_ANrF9lRHDXVNOtfsTqcsw1nmS3YxVjgKb9Vi-ymn4zWX08V_VIfsqJwBTTib3TqcsxlJ5ks41WDlS_qkP2Ej3arNb-K_qkP2FBkvcnl-xIKdTlmMpPMKsmdPNvZMuZzgTlaGj1AABOF30KM_Ut_SCknq4KGQwib8fkTbu1KOibPP9qECIbTbknAU0ClN61aWMeaddU-2cxtDWsLj2GyjMuSFn8a2lkwzEXU7KZsga0OzF9jr8imFKVV6sVcXV1uBrBWOF_uBv-klCuff-Id84LB-WktreJM9oe5Dy0l8yZ7Q9yt3Cry9fuGyeRvvHnfkHfOCV4643O4d8rgsANtZfMme0Pcj8tpbW8RZ7Q9yjs-ry9fuGyeRu31czm2jiLXcbkgqII5ST0PpWQG28wH3kz2h7kbduZm_iLPanuTxwdeH5Y-g8VOH5Ua8RS3HQ-lDdy5rZPpWR8upvMWe1PcgduZbn-As1_rT3Jt2xOXoNrVTXGKT4v0ogyU_gfSsi7bmUm5oWe1Pch5cy-Ys9qe5G7YnL0DWqGu3cv5P6UWWT4n0rJHbmY_iLPanuReW8vmLPanuRu2Jy9A1qhrssnxPpQyyfk_pWR8t5fMWe1Pch5by-ZM9qe5G7YnL0DWqGv3cnxPpQySfE-lZAbbyg_eLPanuQ8t5fMWe1PcjdsTl6BrVDX5JfifShu5T-B9KyPlxL5iz2p7kPLiXzFntT3I3bE5ega1Q15hlH4H0pVqi1ulb9JY87dSn8RZ7U9yHl1L5gz2p7lG7YnL0C9Q2AjnJ4H5yU2OoaTluL8bOWN8upfMWe1PclDbuYD7wZ7U9yN1xPL6EXqGv3M-a-XXrzItzOHcNevMsidvJvMGe1Pch5dzeYM9qe5G7YrL0C9Q3dFNLAxzXxufc3HS4KR448_8AAPzgud-Xc3mLPanuR-Xk3mDPanuVMtH15O7j1-5W6cpO7R0F1U8nWB1_0gkvne7Xcn5wWB8vZvMGe1Pci8vJvMGe1Pcjs6ty9fuRspZG7MzraQn5ybc-Qg_cj85YcbdTeYM9qe5Dy7muT4gzX-tPcp3Cvy9fuTspZG0JkdoYzp2pJbJx3X1ljTt1MbfwFntT3JLtuJncaJntT3Jtxr8vUnZyyNec7i0FmWxBvdPnhxWWwPaeTEsRbTPpmxhzXOzB9-HyLTF4twVNWlKk9WSsLJNd4p3BNON3fIg9_Epsm-qrQJEZqcHJNt4pwKxljHGiy59tl_L0n9mz9i6EwEqlxXZuDEqx1TJNKxxaG2ba2i6MJVjSqa0iItJ8TPYJiOFQUTIMRpxICJGPbucwOY3bJcEG4tl016im6yXZwRx-JU9cXZ4s--k1yXdvLW0vbKB3q8bsXSHjU1H1e5H5F0nnVR9XuWjv9HMt2sSozbKgWtXki_SAIzdHTS_xrFZscBfit83YijP41U_V7kryGo_O6n6vco7QoZkOrEz-G1eB-JRRYlTvL92GPdFHZwIc85swNzcOaLfmC-iU6TZdtO7JDXyT5NM7i1pduz1a6vsTw04c733kNR-d1P1e5H5DUXndT9XuR2hQz6BtolDT1GzcVdWHcVZpZIGxQCRoe6N_F0h7QQ0W_Odqpch2QkjqKksqml0hDII3lpuQSLDWzBoNdb8NNFZ-QtH51U_V7kXkNR-dVP1e5HaFDPoTt4lLBPsvFPSv8Wq3hr80gluQQALAgHW5vf6NNEN9sox4eKeukOaPoOcQywd0763NxyuOxXXkNR8qup-r3IDYaj86qfq9yO0KGfQNtEzeJO2edQyjDo61lUA3dulJIJ6Oa_IX6fqConXLTbjbRdBbsNRk_fVT9XuRjYWjJ--6n6vcjtChn0IdWJWVVZslUSROdSVUZBaHmJu7YW2N-i3W_Ad-qZNTsvnnaaepMb2NLXBhBDw89vRbltw1J48FceQtJcfwqp9Te5GdhaMfjdT9XuR2hQz6E7eJUyHZOJ0D2trJA7p2aScoznouBPwrAacLE3vcWOKs2XEt5KaUtz3cWw6uYWgEAE2BBzWPaFa-QtH51U2_8e5DyFpOdVUj5vcjtChn0DbxMFU7o1Evi4IhznIDe-W-l79ivcErsEgwwR4lSCWrbJM5r9zmBDow1ocb6gG7h1EdqvzsNR8qup-r3IvIej86qfq9yO0KGfQhVolQZ9lJGnPT1bXXIDmBw0zGxte18pGnYkwTbLwzxHd1csZZllErDqTHYltjp0tb8RpbmrobD0XndT9XuRjYWjJ--6n6vcjtChn0J20TOVjtnDQyto2VwqRE3dvkJILxe9wNADp1qhPBdA8hqTzqp-r3IjsNRgffdT9XuR2hQzI2sWUlNXYDPT0zMTpHB8bIw51JEIrnOc9yNXdDJbtzc0IZdmNzEZIqpk2X7pYOe25bYgAnrJsewK8bsNSONvGqn6vcj8haO5HjdT9XuR2hQz6E7aJl8XdgRpHe5UdWKkyggyuORrMuosdSb8yVTtdke1wa1xaQcrhcG3I9i6A7YaiH43VfV7kk7D0eYgVVT9XuR2hQz6EbWLK6or9lagOjFFUQMNwXxxAOtYuBBvoc78un4DG9aYmrNnjWUskEJYwS55mupczSMhBABPAuANuVyeVlcHYejv8AfdT6m9yM7DUY41VT9XuU9oUM-hO2iVLcTwECEiiia5krXkGkDrsDTeM3JvrbpHXX81ZW5JJIAJ1sOA9C33kRR6fwqp-r3IHYekDb-NVH1e5HaFHPoQ6sWYFBbs7F0YGtVUX6uj3IvIyktrVVH1e5G_0cw2kSh2N0x6P-zf8AsXRCeFlRYZs5Bhla2ojmle4NIAda2quzp-5ZuLqxqz1o5Fc2m7oDj1JtzupBx1SXOC5rEJDbTdOhMAJxvpTMZj4Kg1VbLDVGJoblsDwUq_aqqvqZI68tZRU83RHTfI4H1DRdeBpxnVtJX4GhoqlCpXtUjdW-hZQ1cjgLgepPiV56lWQ1NWeGH0g_vHp51dWRua3xGkBdw-6OWtulNuygellhMJGLlKkreRYb944kepLbUPPC3qVa-bFiL-5NMf7x6tdkqWpxfGhQVtLBStMbnBzXucSRysVDwEfCBVbRvIvkhs1Lx1epGKl5HEepbcbEUrm_fP1Hd6WNhaUNsakW_Qd3ql4WnyosVLR_-JfIwZq5A8N0t6EsTvPMepbsbB0nnA-Y7vTjNhqUkNE-p0-A7vUbrT5UGy0f_iXyMAZ3DmPUliVxsL_QoeLPrKfFqymosPpZ4IJXRtkc94LrehVGNVGLQ08VU-jp6eKGQF5Y91zfQce0p9winxhYqqLRyi3GmmzVVMVVS5BVQSwZ25mbxhGYdYvxTO8Itql4rieOT4fhkUwpayF0Zkha6VxDBex4agqrdPi3PCaOw6nyKJYGKfCBXS3CUbzppMtmuJHFE95AvdX2w2DNx-gqZq1kVNNBIIyyPM4WIuDqtH5C0jvxgezd3qmWFjF2cR9TR77qa-Rz-N12g9aXfXiVvhsJSi1qkfMd3ozsLTXuan6ju9JsIcqFdPA_418jBNDT1oZGk21W1xLZGno8Oq6lk7XmCJ0mUtcL25cVz2KoxSQBzcJpiDwO9eVKwiauoiNaPTs4JeRN3XabJLm5Rzumn1mIwsJmw6kY0dcj9UbqmsLbmgpD_eOSyw0Y98SynQwdW7hTT-QzPO5nBCknMrCXAXGiZqKqoDTnw2kP969Kw5-8Y9zoWRG_wGOJA-UrlxNOMYXSsZ-l8PRpUE4QSd_qU1Ti9ezEKiCLchjHkNJZc27dU7DiGIuGU7psnHVmjh61XVNW6LHKxr4t5GJTa3EI8dxaOagZFhmd0t-llHAcLFVRg5NRUfM5KeHpyinY1OAVEeIztZJPC8nQiNwuF0rCNi8OqY80zqi_5slvRyXmJjnwVAaYX74G-e5aQeNweS9GeCzaSeuwJrK-WJ9TA7dZ2vuZGgA5iDYg62J5kKrG0nQjrx7i6OFpeMTRP2Ewho0NVb-1_wBFFl2OwcGzfGvll_0V6_EWuAGb4RsFFc_UkyOFutg-12LInivC9vNItWEpcpnavZLDYx9zNQXdsmg-hZ3F8LpaVhyOkLhzLluqtkjrta999f8Ahj7Sz2J4K9-YyzPvexvEDxNhpm61FPE3fGa-a-oSwlNd0OhzPEquaEncBptzcFnKvaLEIiQzcuI_q_8AVdIxHZbekhs0kzrXsyNp-jOsnX7KukjMkdQRDYkPbC3KQL313nYVr4evRl3yXzRS8NHlKLA9oK-txZlPVCDdOa49FljccNbrWFYymw9-EbZihmzb2NhLs7Q06tB4AnketbBxXRWUbpw7mjOxMFCdkrCXlIJRudxSDwVdipISCnGlNtKWHADgpYMcBUKdgdVknqClgpl9vGb9gXfo333l9DV0L-o8n_olQN04JqqFqqnv1qRHw0solYXCphIbmN16Gj7xHo8d-nn8DcYliraKehhABBAMnYLJVCJX-ETDzSua1pZd1xe7La2VGN09uJmucRMGAMFuXJW2wgldtZhpnvn8Xdx6uS6da6X88P50zPLxXtfzMpP9oXHMSwLEL4ZiNVSGQRNa2J-UDQkn9ioPB5tRtLgUvuztJX1NW2WBwpMOqZCTIXWtK8fgsHK-ruWmq6N4RcMw2u25pKjEaaoqHUrA5jGvZkzFpAdZwNyOIvpcBc22pwOrw2Y1j5nVtHO-7aw8S465ZBrlf2HjyJCzpRsx8fiqtGn-GvPIm1m22IVVVLUPD2PkdmLYqydjB6Gh9gOxbzZ3GsZosDZikjqJlNLSvneZxPUOjaxwDQQZBYvDrjrsuL3XVNmzhcng8djc2G4S5-EQ1NLUMkp2l08r8nizj18XXP5p60pkUMXXm2pTfzLxlDWUVdUMibhBdK4vfI6KfJmyyONzvLNsYyD1XHoUebDa7GqJlDXUuFR0lQTmErZ43tyzMa1r_unQLg7MAeq3apWE4GySuo2zbPUeR2yzat2TDmyuNTm-EGEgOcdNLi91NwTAqV4nZtFs7g9FLLi8VIIoqMSsc19ODuw_MN3d1ulrlc61k-s34nSpVH4lS6jqC2nqKeHDTHSgNhY6Gfe5HM3gAbvOm43sAOo8FJpJcRqNy8MwoGYN6Appy5t2yu1bvNP4kgdZcFQVM4g8Hklcdj8IZUxYgcL-6UuZ7bRWDy69y_ec-F9Fsq7ZxrNscIpmbLYW3CH1cDJZDQtjIJgcXsbYneMBBJcbZXC1tLqNZ5kKc5ePr4mPxXajFNiZozR02Fv90WGZ945QQQbWLXPJB_1WA2123x44VQV1FiVXQyyVE0L2QTvyOAaxwNnE2N3EehHtZgWJYLVwuxakbRyVjXzxwAZSxucixb-Dw0HVZTME2bw7aLZ0NxMVVoKyQs8Xka3jGy97jsVc1dXZOCxFV4jVk3bI3vgfxvE8U8DO1uIV9fUVFdT77dTyOu9lowRY8tVxDDNv9p_HqXxjH8RdCZG5wZjqL6r0b4Odn8Ownwa7T4fSir8VmEheJJGufrHY2IFguXReDjZ4Rh4jxWzQD98R9ypcTbckjscgq5fBNnZOZKgxuzyy9IubmN7_ACLNwYgKDZikLADK_RvoWupmMb4KyyIPDGwPAzkF2hPEhc_wwNdV0DawkU-5OTqvZdMHqwscFZXlcl7ZTsqcKpJmWs8EqpjbeMehNYm6T3MytBdAJXCMnqTkFzE30LnxLvbzNXQ8fZl5EWqjBBuodJ0XSjtVlU2tw4quh_jJfT-5ZeK4wDTq_wCuvivRmPq87sdrgAdZTqFUVYnw-pLoGyOcxxEgdcNeLXA0sfp9CvMRggjxaolfneXPJPSIA9SuMS2XrWCSCSnkdGLXfGS-MHMWi-a3McflvZXUaTST8DOpNqC4eBm8PqzU4tKcRpZI5RS7qPxIOuWnpEvBBc6zR6eGosp2EYk6HavCpcLfUyFsrY3u3Lg5zLhrm5bajmhHsdjjK6N0VREx-cRtc8W3Zu5obpexuxw0vwU-jpdo4s8lRE9shzawvs99rX_CHAlt-3tT1MPdNLxVi3Xb8DsTI6morYW5HuY2QXa29zrw019StPFJ8xY2mnMQmsSGy3ytF3AcvhdH5VxTDYcZYXSyipgmu12V8jgSL8PSNCQbHUKwnrMcYSJH1by27nBkxdY3Yb6O43c3tJKwZ6CjUd5TfDIneVHuR1-CBm8AdHVOLXl9g2Q9Bwu0H5LkW42VdiEsVLROkMc4n3QY1pbKGOlIDvW4Hh8q5jvsYEcc8Tqlz3S7o7uVznte3KBezvzxYj6FW4tXYpSsj8dkq4AZc7MzyDnYbEgX4i1lUv8Aj1NcXUkDxj5To1ayPxyoZLRTsiimYx2SOoFmOYbE6H8IgAaXt8qytZTkSSPZT4g6nEM8eYR1TajfCJxs5xuy-bUcbDjzWNfjk7XNLKqWMtvlLXOGW4sba8wAFBnxuV07JjNKZI7hjtbtBB0HS7SflXdR0NSh_fIreLeQ9iLY2eEmY07JGU5ia6ISB4dlMTSCc-utyeo3uNLLRuKx2Gzuq9o2VMjnOe5mUudxNmgdZ5ALYAXGt1fXpqnqwTvZJGdiJ689YQTqicUo80RsqSoaBslgpsFKvopJHAUnQza9SSOKDZA2bVaGjV-N5fQ09D8MR5P_AET47BvBR5OlXQ8hdPxydG-qj1scsnSp3hkg4Ei69BSkoTTZ6PFU5VaMoR72jaYnhDa2qo5WkBpAEuvIBScKlFP4Q8PZHE57XRmPo_g9p7FzGR2PAHJWx_MPerTYvG67Z7G_dDE43VzGsLWtYcpBPaVe68LfzIwuzq8faaNL4Wm7bDbaSTZrBJa2g3EdpWtBBdbUceSR4KqDa2v2pmp9s8EfT4LNSPZIJWAMe7SwOuvMjqVjW-FuleYvE8Hdvi8mWN7ruyjW4tob6-hMyeGake-JtNgFwT0w6YXt2LhlVpv-4FKLXFGYx3A8Zoto8WjZsvhNHgFK9xirqqGZ4ey4DR0X3cST1Dn1K32UrtmoYZ2bT4dhE5AAgNDh8g9OfO7VSMQ268pMFx2ikom0rgGPiaHXyta9oIPbqsSuWpVs_Z7jZ0ZonCYqk5zjxvbhb9v2NpBiGy2abf0GGZSTusmGvuByv0tUzUV-z4w9_itLhDa8EFj34W8xjXmA697fSsiholeIk_BGh_TuCyfT6G1lrNm_GIt_TYY82Lqhww1zs7yb3ac1ufrQZWbKeMPL6ahMFuiBhjswPabrFaII3iWSD-ncH4p9PobShfsRNJJ7t00bmA_cvEqJ0RA_O11WcFRU0hmiwnE8KpKMyOexgoZyddBmOtzayrkErrSY0dAYODuk-n0Ov-DiTEajwf7TxurKTEa9zXmEU7Sw6x2DSx2oN_kPWuYQt8KLYAw7MVBJFiTGB-9N4PX1uG4jFUYXJIyqvlaGDNnv-CW_hA9S6VivhRFAyGmdhMD8RjjD6sRTZmRG5BYTyNrEi5sTbipVRWvJ2MnSWAWEaad4v5lzhsuJUvgba7HKKSHEt09s0AABaS462-lZ6PDxX7M0mSwmjALf3p7EvCfRYjhlVQ0eEzETMLd6HgNuRa9jroua05x5hAbWMa34uU2CvhXgo8GZW5VcR7UFwN_tZTR02EUsEdugDe3Wqald9ybcKogbispAq6pj2cwGK3idkYBqqa9SM7apq6OwtTDqW08QpwLHRVjdJ5bdn7FYTygCxv6lWtN5pSOz9izcV-Q59O_p18V6MwmOOlkxuqY15A3tm626loK3yyjkLZJBV3ntu2MYRvRd-jLDXibga9uio8UhldjtSY2uLzN0A3iTpa3yq88e2mp6kbmQSOhDn2pmRyCLKTm0As3Um9tCetddKdoLyMWnUtFXYQftTVeKyMo6iGRsjJY5BAxoDySWlthqfupP_mOsKfh4x-mbLG-GWeSRhOaoYwAF7mNzgW6TruZxv8K_O6gUk-1MtbFHFTOhcSGtdJTMa0HKwtFy3mIo_UOtVkuM43Sytie0wyQlo3bqdgLS0R2uLct1Hx-KFMm342GlVuaSmqseqJIgTK0yln3WVjbHMQGucSCTew11JAHIKHvdofGJqenbVCeBtn7uNoc0OAsbgX1DBY9ioosexhoha-S7YHNdEHQxkMINwRpoe3q0TjcZxAOMoewPysYbws4Mvl0tyzFJqpPvYmusywkm2hoaSaqD3U8MLiXkRxsLCXtHADm5reHV1HVjGMGxyR0wqhHK6jeyEbtzTmMt5BlsBmHEk8G9irq3FMSqqd0Er2vic0NLBEwAgFtuA_NGveU5JtDjUucSzlzXkktdEyxuSSLWtY5nXHAg24J1bMjWjmMPwHGBGxzKZ8hcLljPhNILwQ4HgRu3H0Ktqqaspo2SVNNLGx7nMa57bAuabOHpB4hXEmO4vJG9kkrXh7S12aCMkg57jh_WP9fYEzimKYlikTIsQk3rGSOlaBG1tnO4nQBN7IXiR9m3XxeK45O_Yt1cLGYJHkxGM2I0K1Zcs7FcZnPUV2Ke4cAmyhz1SbrnsLYII-CbulXTWJFgpsvyzn0BKUSZ9qojXgF36N995Gnoj3_l9C2hkBCdz6cFBgdcc1J1I5rdaPUJinyehVmI1AiibKek1sgzgXvl52U17Ce1QKjfRsO65G9iLi_oVc43ViKkVOLjcyzzFU49NNHVPoYnOeaZzy5uVo7eOuoTdTPiseGw0tVHu6bP4xExsY3hFrXLuOWyKailbWRSvkcSw9HOMzWi9-CYbJVsqaqXNvXujdG1zy4ZQfigHT9i5XDMy9wk1c0-B7Q09NHJT4oJnSVcAiE4AJhaHNcBl0vw15qRSYxg9XXGjpp8QkqLkBraQHNbq6axzTWyYdT0Ujs0UTi4EtGbXlm42VlgUM9BPvKa8Uh0Lmjkq9XPiaWEVeioxjO0X38FfqbKH3OlJHjlSxwNi11KAQfnpdVHhtNTvmkrqjK21w2ludTb46rKdshcXvBL3G5PWjxe_uZLfjdv-YJlTWR31K9WFNy1-KT8F9DSVmDUdPDSzyVsscdSwvjaKfMQAbG_S61FdR4a0XOJTfqn_wC1Z7SfybgP_bP_AM6zkoJBsEShFPuFwlerUoxlKbv5fQdmdhUUM0xra58MOsj2UBIb6emoUOLbOzQPlZitZlYbWNDYntHTUaeSqghljhe5jJNXAc1lZKCSKTPCzKQQeCpfDwJqzxN1s6nx4I2NftKzD4Y49mvGN_K3NJiL48sjW82Mbc5B1uvmPYONRVPrqt9ZU4zOymE0e8G7G7ZUNvwaG6cRdVzquumxOWpmyP3sRicwgsYBbqaipoqiTD5KeWRxbcZWObmIHYeSrauZdXCVK03Ocrvj38P55F7s9VNhofFi2R1UZmubI64aYiO_qWwgkAcQCCAbXWRwCKop7gPe5paGjPqQBwseS00LXuJc65J4lNCNjowtDYxsyzZJoEveWUSMEcUtzrDmho6WCeYWNuKhQOvJLbsQqZABzumaN1856yuXFfkMLT36dfFejM9iUcwxOd7GSAiTM1zQfkIKlnHcZMbWbwhjXOe1ogaA15IJeBbR1wDfkV0Gh2Kx7EKKCspsNdJTzNzxv3jBmHXqbpcmwe0McRkfhbgwHU7xh_8AsohUrKKtB9TzEVUtwTOcOxjFXOhc_K8w6Rl1Mw5NLaacwBfrsFAq3VNXO6aaMmRwAJbHlGgDRoOwBdWi2B2jmY2SLCXFruB3jO9LPg72nzfyO72sf2kOtV8YMlxqPvTOQbmX8m_5pRGKT8m_5pXX_e62o_md_tY_tJl-wO0bDkdhLg4i4G8Z9pG1qcjI1J8rOS7qT8m_5pSTFJ-Tf81dWdsLtCCGnDDc8t7Hf_Mo1TsfjcDmCbD8hcLtBkZrf5U2vV5H1GVOfKzmO6k_Jv8AmlDdSW_i3-orp0WxuOTTSxR4a50kQ6Yzs0-lRJtmsTjDM1HbMAR0263dlHPrFlOtW5H8mGpLlZhMNY8VrCWuA14haEq6xXZbF8JofHa-hMNNmDM-dp1PAaFUvNc9ZycvaVgkmu8J3pukk6oOKTfRVECUoIIJyQ1ElF6zXqCCC7tGe-fw-ho6L995fQsIWjhbRTomg20QQW8z0SHCxt-CjTRtsdEEFDGK2eGMvN2DgoksEVyMgQQVTHQlkEQtZgUuGJgt0QggqmWonRsbl4KLjrR7lzG3Nv8AmCCCELWf4cvgzU7QAHDcCv5s_wDzqmLW8LIIJZ94uCf4ESNURtP4IUOWGP4oQQVLOxCGwRZvgBSYYIrA5BdBBQKyxpImBos0KzhY3KdOSCCEKx4Mbl4JmZo6kEFDFK-qaMhNtVHofw_SgguPF_kMTTn6dfH_AEz0x4P2Nk2EwfOAbU7ePpKm479zw1-To2PJBBatL3cfgjPpflj5FhhulFD-iFKIFkEFzSG8RyIDIDzJsVU460eJyG2rXadiCCKvCCApacBs8NhxJ_YVRbTutiFE4AXEYsSAbXLboILrp9xZ4iMKqJvd3GG7x2VoIA5DRqZipIJREySPM1kbS0EnSzi4fSboIK0iRF8LIDPB-1rdAaqH9pXFG63QQWHpH3vkZuK_OA8CmUEFxI50f__Z", "width": 320, "height": 179, "page_rect": { "left": 0, "top": 0, "width": 1366, "height": 768 } } } ```

marians commented 6 years ago

Mit einem Tool namens Lighthouse kann die Performance einer Website insbesondere für mobile Endgeräte analysiert und gemessen werden. LIghthouse ist in Google Chrome integriert, kann aber auch als NodeJS modul installiert und programmatisch ausgeführt werden.

marians commented 6 years ago

Update: Seit https://github.com/netzbegruenung/green-spider/pull/17 wird immerhin die Antwortzeit des Server erfasst und ausgegeben und fließt mit in das Ranking ein.

marians commented 6 years ago

Update: Lighthouse läuft "headless" in einem Docker-Container und schreibt als Ergebnis eine JSON-Datei. Sehr schön.

Allerdings funktioniert es nicht mit allen URLs. Es scheint einen Fehler im JavaScript-Code von Lighthouse zu geben. Und wenn es funktioniert, dauert es eine ganze Weile (etwa 40 Sekunden).

Dockerfile:

FROM debian:stretch
RUN apt-get update && apt-get install -y wget curl gnupg fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libcairo2 libcups2 libdbus-1-3 libexpat1 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release xdg-utils
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g lighthouse
ENTRYPOINT ["lighthouse"]

Build:

docker build -t lighthouse .

Aufruf (Beispiel)

docker run --rm -ti -v $PWD:/out lighthouse "http://www.gruene-schwaebisch-gmuend.de/" --no-enable-error-reporting --output=json --output-path=/out/lighthouse.json --chrome-flags="--headless --no-sandbox"

Bei der URL https://gruene-roesrath.de/startseite/ funktioniert es regelmäßig nicht.

marians commented 6 years ago

upstream issue: https://github.com/GoogleChrome/lighthouse/issues/5001

marians commented 6 years ago

Das Problem war offenbar zu wenig Swap-Speicher bzw. zu wenig Platz in /dev/shm im Docker Container. Es funktioniert, wenn man ein Volume mountet: -v $PWD/dev-shm:/dev/shm

marians commented 5 years ago

Mit https://github.com/giantswarm/lighthouse hätten wir ein Docker-Image für Google Lighthouse, das für die Durchführung der Performance-Tests genutzt werden kann.

marians commented 4 years ago

Tests mit Lighthouse bringen zwar sehr umfangreiche Ergebnisse. Sie erfordern aber auch, jede URL noch ein weiteres Mal abzurufen. Das vergrößert den Aufwand für das Spidern erheblich.

Als Alternative habe ich das Performance Logging in Chrome aktiviert. Damit lässt sich das Ladeverhalten schon sehr detailliert auswerten. Experimentell habe ich bislang zwei Metriken erfasst:

Hier einige Auswertungen.

network_requests_verteilung

network_payload_verteilung

network_payload_vs_requests

network_requests_nach_cms

network_payload_nach_cms

network_requests_vs_score

network_payload_vs_score

Die beiden letzten Graphen scheinen anzudeuten, dass es geradezu eine Mindestmenge sowohl für die HTTP-Anfragen als auch für die übertragene Datenmenge gibt. Das könnte man noch genauer auswerten und beispielsweise mit Lighthouse ausloten, welche Optimierungen noch bei den besten Sites vorgeschlagen werden.

Dann stellt sich die Frage, wie man die beiden Metriken mit Punkten versehen möchte.

Übrigens möchte ich im Moment davon absehen, die tatsächliche Ladezeit als Metrik heranzuziehen. Grund dafür ist, dass der Spider häufig auf einem Computer mit DSL-Anbindung ausgeführt wird und die Ladezeiten davon negativ beeinflusst werden und stärker schwanken. Sollten wir eines Tages wieder auf Server-Infrastruktur mit hoher Bandbreite spidern, kann sich das ändern.

marians commented 4 years ago

Erster Ansatz zur Bewertung bzw. zur Darstellung

HTTP-Anfragen

Wording:

Der Erklärungstext zu 0,5 und 0 sollte dazu aufrufen, weitere Tests mit Lighthouse durchzuführen. Darüber hinaus sollte grundlegend erklärt werden, wie sich viele HTTP-Anfragen auf das Ladeverhalten auswirken.

Datentransfer

Wording:

Erklärungstext ähnlich wie oben.

b90g commented 1 month ago

https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/#how_to_reduce_payload_size

Aim to keep your total byte size below 1,600 KiB.

zwar kein Fan von wenn google die standards im web setzt aber 994kb sind echt schwer zu erreichen :)