-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Request for position: aligning on <link rel=prefetch> #114
Comments
Defining how prefetch works with http cache partitioning (in a way that is not a privacy violation and does not result in duplicate loads) is a hard blocker for us supporting it. The issue is described at w3c/resource-hints#82 but remains unfixed. Current plan seems to be to address this as part of a larger rewrite: w3c/resource-hints#86 (comment) but that seems to be stalled. Without spec text addressing this it’s hard for us to meaningfully evaluate this since the current spec only allows either enabling tracking or making prefetches useless. |
The spec text in whatwg/html#8111 is very specific about it: The work on cache partitioned prefetch is worked on in parallel, see #54. |
Yes, I'd really urge WebKit to pay attention to the difference between subresource prefetch (this issue, and the linked spec therein) which is totally unproblematic, and navigational prefetch (#54, and the linked spec therein) which requires more care. In both cases, we think we've done the work! But please evaluate the work, instead of assuming what's designed is non-private or that the spec text is lacking. |
Yeah, I think this is an acceptable model. To elaborate, the HTML PR does not define its own cache and relies completely on the fetch algorithm. That algorithm takes care of partitioning all network state. As such prefetches will only be useful if they end up being hit in the same partition by a regular fetch later on. I chatted with Maciej and he agreed, so I’ll resolve this as “position: support” seven days from now. |
I agree with Anne. I previously was confused about the state of the discussion; it seems like the HTML PR supersedes those older PRs and issues that I linked to. It seems like the new design will not violate partitioning, so that's from a privacy POV. It will make |
Thanks for re-reviewing! Small correction: |
To reiterate from the WebKit issue, as someone making a library (instant.page) that uses navigational prefetch, I know it would be totally fine if Safari implemented only same-origin navigational prefetch and cross-origin navigational prefetch was a noop. It’s progressive enhancement, so a “partial implementation” (the meat of it) would not be “poorly received”. Unlike the complete, silent, ever-present, unique-to-WebKit lack of implementation has been. |
I'm not sure this is possible. Can cross-site navigational prefetch be distinguished from cross-site subframe resource prefetch? |
No it cannot. I'm not sure what @dieulot means as the behavior proposed here would be the same in all browsers. If that library attempts to prefetch cross-origin navigations that would be wasted bandwidth in all browsers as they would all constrain usage thereof to the current partition. |
My message was about “unlocking” WebKit/Safari’s implementation — a case against spec compliance purity. It’s a response to Maciej’s third paragraph in webkit.org/b/194539#c10.
Now that the |
Closing as we've identified our position. |
Request for position on an emerging web specification
(Please delete inapplicable rows.)
Information about the spec
Design reviews and vendor positions
Bugs tracking this feature
Anything else we need to know
Some details in the proposal to align over:
Accept
header for prefetch is defined as the same one that is sent with frame navigation. This prevents double-prefetches withVary: Accept
. See Accept header for prefetch whatwg/fetch#1485Sec-Purpose
for prefetches, to allow servers to discern between regular requests and resource hints. See SendSec-Purpose: prefetch
header for prefetch requests whatwg/fetch#1576prefetch-src
w3c/webappsec-csp#582The text was updated successfully, but these errors were encountered: