http2-push-test
http2-push-test copied to clipboard
To install
You need a relatively recent version of node (eg 7.9.0, but may work in earlier versions).
npm install
To run
Ensure cert/certificate.pem is trusted by the browser. The best way to do this is to add it to the OS keychain. However, you should remove/disable it after testing, as the private key is in this repo.
npm run dev
This will set up an HTTP/2 HTTPS server on port 3001. Edit index.js if you want to change the port.
/
This slowly pushes /data which contains 4 random numbers, and has max-age=3000.
/data, if requested from the server, returns "NOT FROM PUSH".
The page contains various ways to fetch /data, or refetch the page itself.
/no-cache/
As /, but the pushed resource has no-cache rather than max-age.
/no-store/
As /, but the pushed resource has no-store rather than max-age.
/img/
This slowly pushes /img/cat.svg and has max-age=3000.
/img/cat.svg, if requested from the server, is a 404.
/cross-origin-push/
This slowly pushes 4 random numbers to https://www.example.com:3001/, and has max-age=3000. www.example.com is a SAN, so the push should work.
The page contains button to fetch https://www.example.com:3001/, which won't pick up the pushed resource unless you use your hosts file to make example.com resolve to 127.0.0.1.
/vary-cookie/
This slowly pushes 4 random numbers. The push's request has Cookie: val=a, and the response has Vary: Cookie. Buttons on the page allow you to set the cookie.
/push-post/
This slowly pushes 4 random numbers. The push's request has a method of POST.
/preload-fetch/
Uses <link rel="preload"> to preload /preload-fetch/data.
/preload-img/
Uses <link rel="preload"> to preload /preload-img/cat.svg.
/preload-and-push/
Pushes /preload-and-push/data, but also has a Link rel=preload header for the same resource.
/preload-and-push/img/
As above, but pushes and preloads /preload-and-push/img/cat.svg.