├── .gitignore
├── LICENSE
├── README.md
├── docs
├── filmstrip.png
├── priorities.png
├── stand-alone-epic-fail.png
├── stand-alone-fail.png
├── stand-alone-options.png
├── stand-alone-priorities.png
├── stand-alone-waterfall.png
├── waterfall_bad.png
└── waterfall_good.png
├── favicon.ico
├── index.html
├── index.php
├── resources
├── background.png
├── bottom.js
├── faster-one-v9-latin-regular.eot
├── faster-one-v9-latin-regular.svg
├── faster-one-v9-latin-regular.ttf
├── faster-one-v9-latin-regular.woff
├── faster-one-v9-latin-regular.woff2
├── hidden.jpg
├── top.js
└── visible.jpg
├── stand-alone
├── README.md
└── http2priorities.html
├── style.css
└── wordpress
└── http2priorities.zip
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | firebase-debug.log*
8 | public/
9 |
10 | # Firebase cache
11 | .firebase/
12 |
13 | # Firebase config
14 |
15 | # Uncomment this if you'd like others to create their own Firebase project.
16 | # For a team working on the same Firebase project(s), it is recommended to leave
17 | # it commented so all members can deploy to the same project(s) in .firebaserc.
18 | .firebaserc
19 | firebase.json
20 |
21 | # Runtime data
22 | pids
23 | *.pid
24 | *.seed
25 | *.pid.lock
26 |
27 | # Directory for instrumented libs generated by jscoverage/JSCover
28 | lib-cov
29 |
30 | # Coverage directory used by tools like istanbul
31 | coverage
32 |
33 | # nyc test coverage
34 | .nyc_output
35 |
36 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
37 | .grunt
38 |
39 | # Bower dependency directory (https://bower.io/)
40 | bower_components
41 |
42 | # node-waf configuration
43 | .lock-wscript
44 |
45 | # Compiled binary addons (http://nodejs.org/api/addons.html)
46 | build/Release
47 |
48 | # Dependency directories
49 | node_modules/
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional REPL history
58 | .node_repl_history
59 |
60 | # Output of 'npm pack'
61 | *.tgz
62 |
63 | # Yarn Integrity file
64 | .yarn-integrity
65 |
66 | # dotenv environment variables file
67 | .env
68 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Patrick Meenan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # http2priorities
2 | Test Page for HTTP/2 prioritization (server and browser). For the current status of prioritization support across CDN's, cloud and hostring providers please see Andy Davies' [status page](https://github.com/andydavies/http2-prioritization-issues) (and submit results to have them added).
3 |
4 | Server support for HTTP/2 prioritization requires getting a lot of things right (more details in the [Cloudflare blog post](https://blog.cloudflare.com/http-2-prioritization-with-nginx/)).
5 |
6 | It is HIGHLY recommended you use the newer [stand-alone test](stand-alone) if possible which does not require being able to upload content to the system being tested.
7 |
8 | ## Legacy Test
9 |
10 | This is a test page (also as a [WordPress plugin](wordpress)) for exercising HTTP/2 prioritization (particularly for Chrome). It is structured in such a way that the preload scanner will discover low-priority images that are displayed below the viewport and start loading them before 4 high-priority resources are discovered:
11 |
12 | 1. The custom font used for the page (not discovered until layout).
13 | 1. The background "pebble" image used for the page background (not discovered until layout).
14 | 1. The image of the car visible in the viewport (injected by javascript at the top of the page).
15 | 1. A blocking script at the end of the document (injected by document.write).
16 |
17 | The text near the top of the page will also change after the last blocking script is loaded to indicate that DOMContentLoaded has fired.
18 |
19 | The test should work well on all modern browsers but it depends on browsers doing something intelligent with priorities. It was crafted specifically to exercise Chrome's prioritization and expose server prioritization issues.
20 |
21 | To test, I HIGHLY recommend running the testing with a slow network connection (1.6 Mbps "3G Fast" should be fine). That will make any issues glaringly obvious. In case it wasn't obvious, you will need to deploy this test page on your server to use it as a test target and make sure it is HTTPS (otherwise HTTP/2 will not be used). DO NOT use Chrome Dev Tools' built-in connection profiles. The traffic shaping for those are done internal to the browser and introduce different buffers that lead to incorrect results. There are [good network-level options available on most platforms](https://calendar.perfplanet.com/2016/testing-with-realistic-networking-conditions/).
22 |
23 | When it is working well you will see the important resources at the end of the waterfall completing quickly.
24 |
25 | **IMPORTANT:** All Four high-priority requests need to complete early. It is not uncommon for one or two of them to complete early but bottom.js and visible.jpg get delayed. That is a symptom of a server that supports prioritization but with too much output buffering (it saw the font request before it had sent enough data to fill the buffers).
26 |
27 | 
28 |
29 | When it is not working well you will see them delayed significantly:
30 |
31 | 
32 |
33 | The visual experience is also significantly faster when working correctly:
34 |
35 | 
36 |
37 | As of Chrome 70, the HTTP/2 dependency/priority tree for the page looks like this (all requests are marked as "exclusive"):
38 |
39 | 
40 |
--------------------------------------------------------------------------------
/docs/filmstrip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/filmstrip.png
--------------------------------------------------------------------------------
/docs/priorities.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/priorities.png
--------------------------------------------------------------------------------
/docs/stand-alone-epic-fail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/stand-alone-epic-fail.png
--------------------------------------------------------------------------------
/docs/stand-alone-fail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/stand-alone-fail.png
--------------------------------------------------------------------------------
/docs/stand-alone-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/stand-alone-options.png
--------------------------------------------------------------------------------
/docs/stand-alone-priorities.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/stand-alone-priorities.png
--------------------------------------------------------------------------------
/docs/stand-alone-waterfall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/stand-alone-waterfall.png
--------------------------------------------------------------------------------
/docs/waterfall_bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/waterfall_bad.png
--------------------------------------------------------------------------------
/docs/waterfall_good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/docs/waterfall_good.png
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/favicon.ico
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
42 |
43 |
44 |
HTTP/2 priorities test page
45 | Waiting for DOM Content Loaded...
46 |
Visible Image:
47 |
48 |
49 |
50 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
92 |
93 |
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
474 |
--------------------------------------------------------------------------------
/resources/faster-one-v9-latin-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/resources/faster-one-v9-latin-regular.ttf
--------------------------------------------------------------------------------
/resources/faster-one-v9-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/resources/faster-one-v9-latin-regular.woff
--------------------------------------------------------------------------------
/resources/faster-one-v9-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/resources/faster-one-v9-latin-regular.woff2
--------------------------------------------------------------------------------
/resources/hidden.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/resources/hidden.jpg
--------------------------------------------------------------------------------
/resources/top.js:
--------------------------------------------------------------------------------
1 | // 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
2 | console.log("top.js loaded");
3 |
--------------------------------------------------------------------------------
/resources/visible.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/resources/visible.jpg
--------------------------------------------------------------------------------
/stand-alone/README.md:
--------------------------------------------------------------------------------
1 | # Stand-alone HTTP/2 prioritization test
2 |
3 | An online version of this page is hosted at [https://www.webpagetest.org/http2priorities.html](https://www.webpagetest.org/http2priorities.html) for use when testing.
4 |
5 | This is a test page for testing the support for HTTP/2 prioritization on arbitrary hosts. All you need is a single image hosted on the server or service you are trying to test (preferably somewhere close to 100KB in size).
6 |
7 | ## Recommended test conditions
8 |
9 | THe test is designed to work in Chrome and leverages prioritization logic that is specific to Chrome in the testing. It also works best when tested on a low-bandwidth, high-latency connection.
10 |
11 | DO NOT use the connection emulation built into Chrome's dev tools. It will not work correctly for testing for network-level prioritization issues.
12 |
13 | Using WebPageTest, the recommended configuration is:
14 |
15 | * **Location** - Any location with Chrome available (Dulles, VA generally recommended).
16 | * **Browser** - Chrome.
17 | * **Connection** - "3G Fast" (1.6 Mbps/768 Kbps, 150ms RTT).
18 | * **Runs** - 3 (or more) to make sure the results are consistent.
19 |
20 | 
21 |
22 | ## Generating the test URL
23 |
24 | You provide the URL for the image to test as an ```image=``` query parameter to the page (make sure to [url-encode](https://meyerweb.com/eric/tools/dencoder/) the URL or the test will not run). The image MUST be hosted over HTTP/2 (or QUIC) otherwise the results of the test will be invalid. The test appends random query strings to the end of the image URL and will only work if the server still returns the image (most do but some like Twitter's image CDN do not).
25 |
26 | i.e. Assuming you want to test the system hosting the image:
27 |
28 | ```text
29 | https://www.perftests.com/http2priorities/resources/visible.jpg
30 | ```
31 |
32 | You would [url-encode](https://meyerweb.com/eric/tools/dencoder/) the URL to get the encoded version:
33 |
34 | ```text
35 | https%3A%2F%2Fwww.perftests.com%2Fhttp2priorities%2Fresources%2Fvisible.jpg
36 | ```
37 |
38 | Then add the query parameter to the test page to get the URL for the [page to test](https://www.webpagetest.org/http2priorities.html?image=https%3A%2F%2Fwww.perftests.com%2Fhttp2priorities%2Fresources%2Fvisible.jpg):
39 |
40 | ```text
41 | https://www.webpagetest.org/http2priorities.html?image=https%3A%2F%2Fwww.perftests.com%2Fhttp2priorities%2Fresources%2Fvisible.jpg
42 | ```
43 |
44 | ## Interpreting Results
45 |
46 | The test will:
47 |
48 | * Load the HTML Page (request #1).
49 | * Load the image twice, one at a time (Requests #2 and #3).
50 | * Establishes a connection to the server and warm up the TCP connection.
51 | * Each image gets a unique hash appended to the image URL to make sure they are all fetched over the network and not served from cache.
52 | * Request the image 30 times concurrently at a low priority (Requests #4-33).
53 | * Wait for two of the low-priority images to finish loading.
54 | * This gives the server a chance to fill any output buffers with the image data.
55 | * Request the image at a high priority and wait for it to complete (Request #34)
56 | * Request the image at a high priority (Request #35)
57 |
58 | The goal is for the two high-priority requests to complete as soon as possible and as close to the reference time of request #3 as possible.
59 |
60 | A passing server will complete both high-priority requests well before the rest of the images complete:
61 |
62 | 
63 |
64 | A failing server will take much longer for each of the requests (even if the individual requests don't take the full test time):
65 |
66 | 
67 |
68 | The worst-case is when the first high-priority request (Request #34) doesn't return until after all of the low-priority requests have completed:
69 |
70 | 
71 |
--------------------------------------------------------------------------------
/stand-alone/http2priorities.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
123 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | Theme Name: HTTP/2 Priorities Test
3 | Author: Patrick Meenan
4 | Description: WordPress theme for testing HTTP/2 priorities
5 | Version: 0.0.1
6 | */
7 |
--------------------------------------------------------------------------------
/wordpress/http2priorities.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pmeenan/http2priorities/6b1a81c086654132dffedd50a738675306c7cf19/wordpress/http2priorities.zip
--------------------------------------------------------------------------------