Page summary

http://host.docker.internal:8080/wiki/Test

Tested 2023-01-25 00:05:26 using Chrome 97.0.4692.20 (runtime settings).

SummaryWaterfall MetricsVideoFilmstrip CoachPageXrayThird party
| Summary | | Download Video | Download Timeline Log | Download HAR | 

Summary

MetricValue
Page metrics
Performance Score85
Total Page Transfer Size895.3 KB
Requests20
Timing metrics
TTFB [median]306 ms
First Paint [median]588 ms
Fully Loaded [median]1.556 s
Google Web Vitals
TTFB [median]306 ms
First Contentful Paint (FCP) [median]588 ms
Largest Contentful Paint (LCP) [median]588 ms
Cumulative Layout Shift (CLS) [median]0.00
CPU metrics
CPU long tasks [median]1
CPU longest task duration68 ms
CPU last long task happens at526 ms
Visual Metrics
First Visual Change [median]645 ms
Speed Index [median]653 ms
Visual Complete 85% [median]645 ms
Visual Complete 99% [median]645 ms
Last Visual Change [median]1.516 s
Screenshot of run 2

Timings Summary

Metricminmedianmeanmax
Visual Metrics
FirstVisualChange625 ms645 ms679 ms767 ms
LastVisualChange1.500 s1.516 s1.550 s1.633 s
SpeedIndex633 ms653 ms687 ms775 ms
VisualReadiness866 ms871 ms871 ms875 ms
VisualComplete85625 ms645 ms679 ms767 ms
VisualComplete95625 ms645 ms679 ms767 ms
VisualComplete99625 ms645 ms679 ms767 ms
RUM Metrics
TTFB302 ms306 ms346 ms431 ms
LCP583 ms588 ms622 ms694 ms
FCP583 ms588 ms622 ms694 ms
firstPaint583 ms588 ms622 ms694 ms
loadEventEnd1.409 s1.432 s1.460 s1.538 s
CLS0000
User Timing
ClientPref317 ms322 ms362 ms447 ms
mwStartup1.200 s1.208 s1.251 s1.345 s
CPU
Total Blocking Time0 ms0 ms0 ms0 ms
Max Potential FID0 ms0 ms0 ms0 ms
CPU long tasks 1111
CPU last long task happens at523 ms526 ms558 ms625 ms
| Waterfall | | Download HAR | 

Waterfall

Run 2 SpeedIndex median

| Video | Download | 

Video

Download video
| Filmstrip | 

Filmstrip

Use--filmstrip.showAll to show all filmstrips.

0 s
0.4 sClientPref 317 ms
0.6 sDOM Content Loaded Time 515 msCPU Long Task duration 62 msFirst Contentful Paint 588 msLCP <P> 588 ms
0.7 sFirst Visual Change 645 msVisual Complete 85% 645 msVisual Complete 95% 645 msVisual Complete 99% 645 ms
1.2 smwStartup 1.200 s
1.5 sPage Load Time 1.432 s
1.6 sLast Visual Change 1.516 sFully Loaded 1.556 s
| Performance advice | Best practice advice | Privacy advice | Page info | Technologies | 

Coach

The coach helps you find performance problems on your web page using web performance best practice rules. And gives you advice on privacy and best practices.

I am the coach

Coach score

Performance advice (85)

TitleAdviceScore
Avoid slowing down the critical rendering path (avoidRenderBlocking)The page has 2 blocking requests and 0 in body parser blocking (0 JavaScript and 2 CSS). There are 1 potentially render blocking requests. You need to verify if it is render blocking: http://host.docker.internal:8080/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-202299
Description: The critical rendering path is what the browser needs to do to start rendering the page. Every file requested inside of the head element will postpone the rendering of the page, because the browser need to do the request. Avoid loading JavaScript synchronously inside of the head (you should not need JavaScript to render the page), request files from the same domain as the main document (to avoid DNS lookups) and inline CSS for really fast rendering and a short rendering path.
Offenders:
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022
  • Don't scale images in the browser (avoidScalingImages)The page has 2 images that are scaled more than 100 pixels. It would be better if those images are sent so the browser don't need to scale them.80
    Description: It's easy to scale images in the browser and make sure they look good in different devices, however that is bad for performance! Scaling images in the browser takes extra CPU time and will hurt performance on mobile. And the user will download extra kilobytes (sometimes megabytes) of data that could be avoided. Don't do that, make sure you create multiple version of the same image server-side and serve the appropriate one.
    Offenders:
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en.svg
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-tagline-en.svg
  • Inline CSS for faster first render (inlineCss)The page has both inline styles as well as it is requesting 2 CSS files inside of the head. Let's only inline CSS for really fast render.90
    Description: In the early days of the Internet, inlining CSS was one of the ugliest things you can do. That has changed if you want your page to start rendering fast for your user. Always inline the critical CSS when you use HTTP/1 and HTTP/2 (avoid doing CSS requests that block rendering) and lazy load and cache the rest of the CSS. It is a little more complicated when using HTTP/2. Does your server support HTTP push? Then maybe that can help. Do you have a lot of users on a slow connection and are serving large chunks of HTML? Then it could be better to use the inline technique, becasue some servers always prioritize HTML content over CSS so the user needs to download the HTML first, before the CSS is downloaded.
    Offenders:
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022
  • Avoid CPU Long Tasks (longTasks)The page has 1 CPU long task with the total of 68 ms. The total blocking time is 0 ms and 1 long task before first contentful paint with total time of 68 ms. However the CPU Long Task is depending on the computer/phones actual CPU speed, so you should measure this on the same type of the device that your user is using. Use Geckoprofiler for Firefox or Chromes tracelog to debug your long tasks.80
    Description: Long CPU tasks locks the thread. To the user this is commonly visible as a "locked up" page where the browser is unable to respond to user input; this is a major source of bad user experience on the web today. However the CPU Long Task is depending on the computer/phones actual CPU speed, so you should measure this on the same type of the device that your user is using. To debug you should use the Chrome timeline log and drag/drop it into devtools or use Firefox Geckoprofiler.
    Offenders:
  • unknown
  • Avoid extra requests by setting cache headers (cacheHeaders)The page has 4 requests that are missing a cache time. Configure a cache time so the browser doesn't need to download them every time. It will save 890 B the next access.60
    Description: The easiest way to make your page fast is to avoid doing requests to the server. Setting a cache header on your server response will tell the browser that it doesn't need to download the asset again during the configured cache time! Always try to set a cache time if the content doesn't change for every request.
    Offenders:
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/arrow-down.svg?9426f
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/search.svg?ac00d
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/arrow-down...n-progressive.svg
  • http://host.docker.internal:8080/favicon.ico
  • Long cache headers is good (cacheHeadersLong)The page has 3 requests that have a shorter cache time than 30 days (but still a cache time).97
    Description: Setting a cache header is good. Setting a long cache header (at least 30 days) is even better beacause then it will stay long in the browser cache. But what do you do if that asset change? Rename it and the browser will pick up the new version.
    Offenders:
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022
  • Always compress text content (compressAssets)The page has 7 requests that are served uncompressed. You could save a lot of bytes by sending them compressed instead.30
    Description: In the early days of the Internet there were browsers that didn't support compressing (gzipping) text content. They do now. Make sure you compress HTML, JSON, JavaScript, CSS and SVG. It will save bytes for the user; making the page load faster and use less bandwith.
    Offenders:
    URLTransfer sizeContent size
    http://host.docker.internal:8080/wiki/Test 95.8 KB95.8 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 83.5 KB83.4 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 39.1 KB39.1 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 63.0 KB63.0 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 495.5 KB495.5 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 70.4 KB70.4 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 21.5 KB21.5 KB
    Total JavaScript size shouldn't be too big (javascriptSize)The total JavaScript transfer size is 706.1 kB. This is quite large. 0
    Description: A lot of JavaScript often means you are downloading more than you need. How complex is the page and what can the user do on the page? Do you use multiple JavaScript frameworks?
    Offenders:
    URLTransfer sizeContent size
    http://host.docker.internal:8080/load.php...nal:8080/load.php 39.1 KB39.1 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 63.0 KB63.0 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 495.5 KB495.5 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 70.4 KB70.4 KB
    http://host.docker.internal:8080/load.php...nal:8080/load.php 21.5 KB21.5 KB
    Make each CSS response small (optimalCssSize)http://host.docker.internal:8080/load.php?lang=en&modules=ext.relatedArticles.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cmediawiki.ui.button%2Cicon%7Cskins.vector.icons%2Cstyles&only=styles&skin=vector-2022 size is 85.5 kB (85461) and that is bigger than the limit of 14.5 kB. Try to make the CSS files fit into 14.5 KB.90
    Description: Make CSS responses small to fit into the magic number TCP window size of 14.5 KB. The browser can then download the CSS faster and that will make the page start rendering earlier.
    Offenders:
    URLTransfer sizeContent size
    http://host.docker.internal:8080/load.php...nal:8080/load.php 83.5 KB83.4 KB
    Avoid missing and error requests (responseOk)The page has 1 error response. The page has 1 response with code 404. 90
    Description: Your page should never request assets that return a 400 or 500 error. These requests are never cached. If that happens something is broken. Please fix it.
    Offenders:
  • http://host.docker.internal:8080/favicon.ico
  • Best practice advice (82)

    TitleAdviceScore
    Meta description (metaDescription)The page is missing a meta description.0
    Description: Use a page description to make the page more relevant to search engines.
    Avoid too many third party requests (thirdParty)The page do 15% requests to third party domains (3 requests and 24.4 kB). First party is 17 requests and 892.4 kB. The regex .*docker.* was used to calculate first/third party requests.50
    Description: Do not load most of your content from third party URLs.
    Avoid unnecessary headers (unnecessaryHeaders)There are 16 responses that sets both a max-age and expires header. There are 20 responses that sets a server header. 64
    Description: Do not send headers that you don't need. We look for p3p, cache-control and max-age, pragma, server and x-frame-options headers. Have a look at Andrew Betts - Headers for Hackers talk as a guide https://www.youtube.com/watch?v=k92ZbrY815c or read https://www.fastly.com/blog/headers-we-dont-want.
    Offenders:
  • http://host.docker.internal:8080/wiki/Test
  • http://host.docker.internal:8080/wiki/Test
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022
  • http://host.docker.internal:8080/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022
  • https://en.wikipedia.org/static/images/icons/wikipedia.png
  • https://en.wikipedia.org/static/images/icons/wikipedia.png
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en.svg
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en.svg
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-tagline-en.svg
  • https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-tagline-en.svg
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/arrow-down.svg?9426f
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/search.svg?ac00d
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/skins/Vector/resources/common/images/arrow-down...n-progressive.svg
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/favicon.ico
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • http://host.docker.internal:8080/load.php...nal:8080/load.php
  • Privacy advice (66)

    TitleAdviceScore
    Serve your content securely (https)What!! The page is not using HTTPS. Every unencrypted HTTP request reveals information about user’s behavior, read more about it at https://https.cio.gov/everything/. You can get a totally free SSL/TLS certificate from https://letsencrypt.org/.0
    Description: A page should always use HTTPS (https://https.cio.gov/everything/). You also need that for HTTP/2. You can get your free SSL/TLC certificate from https://letsencrypt.org/.
    Use a good Content-Security-Policy header to make sure you you avoid Cross Site Scripting (XSS) attacks. (contentSecurityPolicyHeader)Set a Content-Security-Policy header to make sure you are not open for Cross Site Scripting (XSS) attacks. You can start with setting a Content-Security-Policy-Report-Only header, that will only report the violation, not stop the download.0
    Description: Content Security Policy is delivered via a HTTP response header, and defines approved sources of content that the browser may load. It can be an effective countermeasure to Cross Site Scripting (XSS) attacks and is also widely supported and usually easily deployed. https://scotthelme.co.uk/content-security-policy-an-introduction/.
    Offenders:
  • http://host.docker.internal:8080/wiki/Test
  • Set a permission policy header that opt out your users being tracked in Chrome by FLoC. (disableFLoCHeader)Set a permission policy header that opt out Chrome for tracking what your users do on your site.0
    Description: Googles new tracking method is called Federated Learning of Cohorts (FLoC) and it groups you based on your interests and demographics, derived from your browsing history, to enable creepy advertising and other content targeting without third-party cookies. You can avoid that by setting a Permissions-Policy header with the value of interest-cohort=(). See https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea.
    Offenders:
  • http://host.docker.internal:8080/wiki/Test
  • Set a referrer-policy header to make sure you do not leak user information. (referrerPolicyHeader)Set a referrer-policy header to make sure you do not leak user information.0
    Description: Referrer Policy is a new header that allows a site to control how much information the browser includes with navigations away from a document and should be set by all sites. https://scotthelme.co.uk/a-new-security-header-referrer-policy/.
    Offenders:
  • http://host.docker.internal:8080/wiki/Test
  • Avoid third party cookies that is used to track the user. (thirdPartyCookies)The page sets 3 third party cookies.0
    Description: Third party cookies are used to track the user. They are automatically blocked in Safari and Firefox.
    Offenders:
  • .wikipedia.org
  • .wikipedia.org
  • .wikipedia.org
  • Page info

    Page info
    TitleTest - my_wiki
    GeneratorMediaWiki 1.40.0-alpha
    Width1350
    Height9942
    DOM elements820
    Avg DOM depth12
    Max DOM depth20
    Iframes0
    Script tags4
    Local storage523.9 KB
    Session storage0 b
    Network Information API4g

    Technologies used to build the page.

    Data collected using Wappalyzer.  Use --browsertime.firefox.includeResponseBodies htmlor --browsertime.chrome.includeResponseBodies htmlto help Wappalyser find more information about technologies used.

    TechnologyConfidenceCategory
    MediaWiki 100  Wikis
    PHP 7.4.32100  Programming languages
    UNIX 100  Operating systems
    Bootstrap 7100  UI frameworks
    Apache 2.4.54100  Web servers
    jQuery 100  JavaScript libraries
    | Browser metrics | Visual Metrics | Largest Contentful Paint | Cumulative Layout Shift | Metrics from CDP | 

    Data from run 2

    Visual Metrics

    Browser Metrics

    Largest Contentful Paint

    When in time the page main content is rendered (collected using the Largest Contentful Paint API). Read more about Largest Contentful Paint.

    Element typeP
    Element/tag<p></p>
    Render time 588 ms
    Load time0 ms
    Size (width*height)19140
    DOM path
    div:eq(0) > div > div:eq(2) > main#content > div#bodyContent > div#mw-content-text > div:eq(0) > p:eq(8)> div:eq(0) > div > div:eq(2) > main#content > div#bodyContent > div#mw-content-text > div:eq(0) > p:eq(8)>
    LCP

    The largest contentful paint is highlighted in the image. If no element is highlighted the element was removed before the screenshot or the LCP API couldn't find the element.

    Detected Cumulative Layout Shift

    No layout shift detected.

    Server timings

    There are no Server Timings.

    Custom metrics collected through JavaScript

    There are no custom configured scripts.

    Extra metrics collected using scripting

    There are no custom extra metrics from scripting.

    CDP Performance

    namevalue
    AudioHandlers0
    Documents11
    Frames11
    JSEventListeners96
    LayoutObjects948
    MediaKeySessions0
    MediaKeys0
    Nodes1811
    Resources14
    ContextLifecycleStateObservers13
    V8PerContextDatas1
    WorkerGlobalScopes0
    UACSSResources0
    RTCPeerConnections0
    ResourceFetchers11
    AdSubframes0
    DetachedScriptStates0
    ArrayBufferContents0
    LayoutCount11
    RecalcStyleCount16
    LayoutDuration67
    RecalcStyleDuration15
    DevToolsCommandDuration14
    ScriptDuration99
    V8CompileDuration1
    TaskDuration299
    TaskOtherDuration104
    ThreadTime0
    ProcessTime1
    JSHeapUsedSize3859732
    JSHeapTotalSize5722112
    FirstMeaningfulPaint588
    | Summary  | Largest responses  | Requests and sizes per content type  | Data per domain | Expires and last modified statistics  | Requests loaded after onLoad event  | Render blocking requests  | 

    PageXray

    How the page is built.

    Summary
    HTTP versionHTTP/1.1
    Total requests20
    Total domains2
    Total transfer size895.3 KB
    Total content size902.8 KB
    Responses missing compression9
    Number of cookies3
    Third party cookies3
    Requests per response code
    20019
    4041

    Largest assets on the page (by transfer size)

    Requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html484 B95.8 KB95.8 KB1
    css970 B83.5 KB83.5 KB2
    javascript2.3 KB689.5 KB689.5 KB5
    image0 b14.5 KB13.1 KB1
    svg3.3 KB11.7 KB20.8 KB10
    Total7.0 KB895.1 KB902.6 KB19

    Data per domain

    DomainTotal download timeTransfer SizeContent SizeRequests
    host.docker.internal2.238 s871.4 KB871.3 KB17
    en.wikipedia.org373 ms23.8 KB31.5 KB3

    Expires and last modified statistics

    typeminmedianmax
    Expires0 seconds4 weeks1 year
    Last modified19 seconds14 weeks32 weeks

    Requests loaded after onLoad event

    Included requests done after load event end.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript91.9 KB2
    image0 b0
    font0 b0
    Total92.1 KB3

    Requests loaded after onContentLoad

    Includes requests done after DOM content loaded.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript650.4 KB4
    image0 b0
    font0 b0
    Total650.6 KB5

    Render blocking requests

    Render blocking information directly from Chrome.

    BlockingIn body parser blockingPotentially blocking
    201

    Render information

    | Categories | | Cookies | | First vs third | 

    Third party

    Third party requests categorised by Third party web.

    CategoryRequests
    CategoryNumber of tools

    Unmatched third party domains

    Here's a list of domains that didn't match any tool in Third party web. If you are sure they are third party domains, please do a PR to that project. You can also fine tune the list using --firstParty.

    en.wikipedia.org

    Third party cookies

    Cookie nameDomain
    WMF-Last-Access .wikipedia.org

    First party requests and sizes per content type

    Calculated using .*docker.* (use --firstParty to configure).

    ContentHeader SizeTransfer SizeContent SizeRequests
    html484 B95.8 KB95.8 KB1
    css970 B83.5 KB83.5 KB2
    javascript2.3 KB689.5 KB689.5 KB5
    image0 b0 b0 b0
    font0 b0 b0 b0
    svg3.3 KB2.4 KB2.4 KB8
    Total7.3 KB871.4 KB871.3 KB17

    Third party requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b0 b0 b0
    css0 b0 b0 b0
    javascript0 b0 b0 b0
    image0 b14.5 KB13.1 KB1
    font0 b0 b0 b0
    svg0 b9.3 KB18.4 KB2
    TotalN/A23.8 KB31.5 KB3