[Webkit-unassigned] [Bug 172639] New: Use of HTTP/2 push cache seems inconsistent

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri May 26 03:33:52 PDT 2017


https://bugs.webkit.org/show_bug.cgi?id=172639

            Bug ID: 172639
           Summary: Use of HTTP/2 push cache seems inconsistent
           Product: WebKit
           Version: Safari Technology Preview
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Major
          Priority: P2
         Component: Page Loading
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: jaffathecake at gmail.com
                CC: beidson at apple.com

Scrappy test: https://github.com/jakearchibald/http2-push-test
Video of issue: https://www.youtube.com/watch?v=yADpVEt1d74

Safari's use of the HTTP/2 push cache seems inconsistent.

My hunch is the prerenderer (when the url is entered into the url bar) ends up creating an extra connection to the server. From then on Safari ends up with two connections to the server. This means the cached items are spread across both connections, meaning their use is kinda random.

I've marked this as "major" as it makes HTTP/2 push kinda unusable in Safari.

When happens in the video vs what I think should happen:

0:03
URL is pasted into the URL bar. Safari requests the page, and the server starts pushing a response for subresource "data".
>From the server log, it looks like two connections have been created to the server. This is where my hunch comes from.

0:09
"Fetch with credentials" is clicked. This fetches "data" which should come from the push cache.

0:18
Console shows "NOT FROM PUSH". This is the standard server response from fetching "data", meaning the push cache wasn't used.

0:29
An additional fetch for "data" also goes to the server.

0:36
The page is refetched, meaning "data" is pushed again.

0:41
A fetch for "data" once again goes to the server. I would have expected this to use the cached item.

0:43
An additional fetch for "data" does come from the push cache!

0:51
Page reloaded, "data" is pushed

0:56
"data" fetched, and comes from the push cache as expected.

1:01
Page reloaded, "data" is pushed

1:02
"data" fetched while push is in progress. Browser waits for push to complete & fetches from push cache. This is what I'd expect.

1:11
Page reloaded, "data" is pushed

1:12
"data" is fetched twice, and pushed data is returned twice.
I'm not sure about this. I thought pushed data was only supposed to be used once, especially if it's "no-cache", as is the case here.

1:18
Page reloaded, "data" is pushed

1:22
"data" fetched, comes from push cache, as I'd expect.

1:24
"data" fetched again, comes from network, as I'd expect because the pushed resource has already been used.

1:27
Page reloaded, "data" is pushed

1:28
"data" fetched, comes from network. I'd expect this to wait on the pushed resource.

1:32
"data" fetched again, comes from the push cache.

I hope this helps. I can't really figure it out.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170526/4cef781f/attachment-0001.html>


More information about the webkit-unassigned mailing list