Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
No| Shipping on desktop | 144 |
| DevTrial on desktop | 138 |
| Shipping on Android | 144 |
| DevTrial on Android | 138 |
| Shipping on WebView | 144 |
I expect it will change over time but the changes should be pretty minor (as new resources increase or decrease popularity). Generally we'd want to include resources that have been common for a while and are likely to continue to be common. I'd expect small changes every milestone (or two). There's also the pervasive-cache@chromium.org mailing list that you can ping to give us a heads-up (or a CL to Chromium) if there's something specific you want to draw attention to.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
This is interesting, given all of the problems involved in governance and the way it cuts against platform progress. Will the full set be downloaded before any pre-population is used? What controls will be in place to make sure that this does not exacerbate cross-site tracking via timing? Will these caches be pushed in a versioned way? Who will make the call about how much can be in the set? And are these delivered via component-updater?Best,Alex
On Friday, October 17, 2025 at 1:44:19 PM UTC-7 Patrick Meenan wrote:
I expect it will change over time but the changes should be pretty minor (as new resources increase or decrease popularity). Generally we'd want to include resources that have been common for a while and are likely to continue to be common. I'd expect small changes every milestone (or two). There's also the pervasi...@chromium.org mailing list that you can ping to give us a heads-up (or a CL to Chromium) if there's something specific you want to draw attention to.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Thanks for pointing out Mozilla's response. I think they have some fair points.
If we look at the list, it is clear from domain names, that some sites, or entities, will benefit more from others from faster first-loads. I mean, something like 30% of the list are from Google entities, from very harmless (IMHO) hosted fonts to analytics, ads and video hosting (YouTube). Some other big sites like Shopify and Wix/parastorage combine to another 15%.
Having your key resources on that list may not matter very much, or it may. The existence of the list is scary and I lack the data to understand what the pros are both in scale and area. Is the disk space issue a real problem or just something that is a potential concern lacking investigation, for instance?
I understand that the published list is not a final, set-in-stone, item, so I will not comment on individual items, but what thought have there been on maintaining such a list long term? It seems to me that it might become an area of contention that would be nice to avoid.
In the initial intent, the claim was that this is important for the healthy operation of the web. But is it really?
/Daniel
On 10/18/25 8:34 a.m., Patrick Meenan wrote:
Sorry, I missed a step in making the candidate resource list public. I have moved it to my chromium account and made it public here.
Not everything in that list meets all of the criteria - it's just the first step in the manual curation (same URL served the same content across > 20k sites in the HTTP Archive dataset).
The manual steps frome there for meeting the criteria are basically:
- Cull the list for scripts, stylesheets and compression dictionaries.- Remove any URLs that use query parameters.- Exclude any responses that set cookies.- Identify URLs that are not manually versioned by site embedders (i.e. the embedded resource can not get stale). This is either in-place updating resources or automatically versioned resources.- Only include URLs that can reliably target a single resource by pattern (i.e. ..../<hash>-common.js but not ..../<hash>.js)- Get confirmation from the resource owner that the given URL Pattern is and will continue to be appropriate for the single-keyed cache
A few questions on list curation:
Can you clarify how big the list will be? The privacy review at https://chromestatus.com/feature/5202380930678784?gate=5174931459145728 mentions ~500, while the design doc mentions 1000. I see the candidate resource list starts at ~5000, then presumably manual curation begins to get to one of those numbers.
What is the expected list curation/update cadence? Is it actually manual?
Is there any recourse process for owners of resources that don't want to be included? Do we have documentation on what it mean to be appropriate for the single-keyed cache?
thanks,
Mike
On 10/22/25 5:48 p.m., Patrick Meenan wrote:
The candidate list goes down to 20k occurrences in order to catch resources that were updated mid-crawl and may have multiple entries with different hashes that add up to 100k+ occurrences. In the candidate list, without any filtering, the 100k cutoff is around 600, I'd estimate that well less than 25% of the candidates make it through the filtering for stable pattern, correct resource type and reliable pattern. First release will likely be 100-200 and I don't expect it will ever grow above 500.
As far as cadence goes, I expect there will be a lot of activity for the next few releases as individual patterns are coordinated with the origin owners but then it will settle down to a much more bursty pattern of updates every few Chrome releases (likely linked with an origin changing their application and adding more/different resources). And yes, it is manual.
As far as the process goes, resource owners need to actively assert that their resource is appropriate for the single-keyed cache and that they would like it included (usually in response to active outreach from us but we have the external-facing list for owner-initiated contact as well). The design doc has the documentation for what it means to be appropriate (and the doc will be moved to a readme page in the repository next to the actual list so it's not a hard-to-find Google doc):
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
My understanding was that there was believed to be a meaningful security benefit with partitioning the cache. That’s because it would limit a party from being able to inferr that you’ve visited some other site by measuring a side effect tied to how quickly a resource loads. That observation could potentially be made even if that specific adversary doesn’t have any of their own content loaded on the other site.
Of course, if there is an entity with a resource loaded across both sites with a 3p cookie and they’re willing to share that info/collude, there’s not much benefit. And even when partitioned, if 3p cookies are enabled, there are potentially measurable side effects that differ based on if the resource request had some specific state in a 3p cookie.
Does that incremental security benefit of partitioning the cache justify the performance costs when 3p cookies are still enabled? I’m not sure.
Even if partitioning was eliminated, a site could protect themselves a bit by specifying Vary: Origin, but that probably doesn’t sufficiently cover iframe scenarios (nor would I expect most sites to hold it right).
The list construction should already be completely objective. I changed the manual origin-owner validation to trust and require "cache-control: public" instead. The rest of the criteria should be well-defined and objective. I'm not sure if they can be fully automated yet (though that might just be my pre-AI thinking).The main need for humans in the loop right now is to create the patterns so that they each represent a "single" resource that is stable over time with URL changes (version/hash) and distinguishing those stable files from random hash bundles that aren't stable from release to release. That's fairly easy for a human to do (and get right).
I'm extremely supportive of this effort, with multiple hats on.I'd have loved if this wasn't restricted to users with 3P cookies enabled, but one can imagine abuse where pervasive resource *patterns* are used, but with unique hashes that are not deployed in the wild, and where each such URL is used as a cross-origin bit of entropy.
On Sat, Nov 8, 2025 at 7:04 AM Patrick Meenan <pme...@chromium.org> wrote:The list construction should already be completely objective. I changed the manual origin-owner validation to trust and require "cache-control: public" instead. The rest of the criteria should be well-defined and objective. I'm not sure if they can be fully automated yet (though that might just be my pre-AI thinking).The main need for humans in the loop right now is to create the patterns so that they each represent a "single" resource that is stable over time with URL changes (version/hash) and distinguishing those stable files from random hash bundles that aren't stable from release to release. That's fairly easy for a human to do (and get right).This is something that origins that use compression dictionaries already do by themselves - define the "match" pattern that covers the URL's semantics. Can we somehow use that for automation where it exists?
We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
All of this, and more, has to be weighed against each other to get to a solution with an "ideal" balance. I currently do not know what that balance is.
I do not like the look of certain aspects here, but on the other hand I do like the security/privacy improvements and it would be sad if those have to be reverted because some considered them too costly.
This post does not really change anything, but just so that you know what is being voiced. And if someone has more to add, please do add your own information and thoughts. Especially if I have misunderstood or mischaracterized something. That is what these threads are for.
/Daniel
We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
Regarding the concern that tying this to 3P cookies will make it harder to disable 3P cookies completely: have you considered making this a separate UI toggle instead?
We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
On Wed, Nov 19, 2025 at 12:06 PM Daniel Bratell <brat...@gmail.com> wrote:We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
Ad revenue was the easiest to measure but it spans things like faster captcha challenges, faster embedded maps, faster embedded videos, faster consent banners, more reliable analytics and a few other cases (for some set of highly-used providers) though the actual impact is small (likely not user-visible but meaningful at-scale).
2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
One of the really big problems with the full single-keyed cache was that ALL resources ended up in it, even if they weren't intended to be shared and the regular cache is easily probed (i.e. fetch only-if-cached). That exposed things like evil.com being able to probe for resources from mybank.com that are only loaded for logged-in accounts (which really have no business in being shared). There is a pretty solid line between "third-party resources intended to be shared" and "first-party resources that are inadvertently sniffable". The fuzziness in the proposal comes down to where on the scale of "how common is this intended-to-be-shared resource?" a given resource lies to minimize any information that could be inferred.
On Wed, Nov 19, 2025 at 1:02 PM Patrick Meenan <pme...@chromium.org> wrote:On Wed, Nov 19, 2025 at 12:06 PM Daniel Bratell <brat...@gmail.com> wrote:We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
Ad revenue was the easiest to measure but it spans things like faster captcha challenges, faster embedded maps, faster embedded videos, faster consent banners, more reliable analytics and a few other cases (for some set of highly-used providers) though the actual impact is small (likely not user-visible but meaningful at-scale).When we moved to the triple-keyed cache I recall an argument that it was going to hurt small sites more than it hurt big sites, the argument being that sites users visit frequently will generally still benefit from the cache, but the long torso and tail of sites users visit only infrequently will no longer have the benefit of shared caching. What do you make of that argument? Is there any chance that it's something you could quantify in some way? Eg. for sites that have consent banners, embedded videos or embedded maps, can we measure a positive impact from this feature and can we stratify that by site popularity to test whether the impact accrues disproportionately to less popular sites as this argument suggests?2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
One of the really big problems with the full single-keyed cache was that ALL resources ended up in it, even if they weren't intended to be shared and the regular cache is easily probed (i.e. fetch only-if-cached). That exposed things like evil.com being able to probe for resources from mybank.com that are only loaded for logged-in accounts (which really have no business in being shared). There is a pretty solid line between "third-party resources intended to be shared" and "first-party resources that are inadvertently sniffable". The fuzziness in the proposal comes down to where on the scale of "how common is this intended-to-be-shared resource?" a given resource lies to minimize any information that could be inferred.I agree there's an important fundamental distinction here. What if "third-party resources intended to be shared" was an API? If servers had to explicitly opt resources into the shared cache (with guidance saying that loads of such resources shouldn't be conditional on user state), how would that impact the design? Would we still need to compute a list of "pervasive" resources" or could we safely allow any resource marked as such to be shared when 3PCs are enabled?
On Wed, Nov 19, 2025 at 1:02 PM Patrick Meenan <pme...@chromium.org> wrote:On Wed, Nov 19, 2025 at 12:06 PM Daniel Bratell <brat...@gmail.com> wrote:We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
Ad revenue was the easiest to measure but it spans things like faster captcha challenges, faster embedded maps, faster embedded videos, faster consent banners, more reliable analytics and a few other cases (for some set of highly-used providers) though the actual impact is small (likely not user-visible but meaningful at-scale).When we moved to the triple-keyed cache I recall an argument that it was going to hurt small sites more than it hurt big sites, the argument being that sites users visit frequently will generally still benefit from the cache, but the long torso and tail of sites users visit only infrequently will no longer have the benefit of shared caching. What do you make of that argument? Is there any chance that it's something you could quantify in some way? Eg. for sites that have consent banners, embedded videos or embedded maps, can we measure a positive impact from this feature and can we stratify that by site popularity to test whether the impact accrues disproportionately to less popular sites as this argument suggests?
2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
One of the really big problems with the full single-keyed cache was that ALL resources ended up in it, even if they weren't intended to be shared and the regular cache is easily probed (i.e. fetch only-if-cached). That exposed things like evil.com being able to probe for resources from mybank.com that are only loaded for logged-in accounts (which really have no business in being shared). There is a pretty solid line between "third-party resources intended to be shared" and "first-party resources that are inadvertently sniffable". The fuzziness in the proposal comes down to where on the scale of "how common is this intended-to-be-shared resource?" a given resource lies to minimize any information that could be inferred.I agree there's an important fundamental distinction here. What if "third-party resources intended to be shared" was an API? If servers had to explicitly opt resources into the shared cache (with guidance saying that loads of such resources shouldn't be conditional on user state), how would that impact the design? Would we still need to compute a list of "pervasive" resources" or could we safely allow any resource marked as such to be shared when 3PCs are enabled?
On Wed, Nov 19, 2025 at 1:57 PM Rick Byers <rby...@chromium.org> wrote:On Wed, Nov 19, 2025 at 1:02 PM Patrick Meenan <pme...@chromium.org> wrote:On Wed, Nov 19, 2025 at 12:06 PM Daniel Bratell <brat...@gmail.com> wrote:We had a discussion about this in the API OWNERS meeting and I was asked to make my thoughts public.
There are a couple of aspects to this:
1. This is trying to mitigate some negative effects of a security/privacy enhancing change (triple keyed cache). The negative effects are, as far as I can determine, in the form of reduced ad revenue ("web ecosystem") because some ad network scripts will have to be reloaded from servers.
Ad revenue was the easiest to measure but it spans things like faster captcha challenges, faster embedded maps, faster embedded videos, faster consent banners, more reliable analytics and a few other cases (for some set of highly-used providers) though the actual impact is small (likely not user-visible but meaningful at-scale).When we moved to the triple-keyed cache I recall an argument that it was going to hurt small sites more than it hurt big sites, the argument being that sites users visit frequently will generally still benefit from the cache, but the long torso and tail of sites users visit only infrequently will no longer have the benefit of shared caching. What do you make of that argument? Is there any chance that it's something you could quantify in some way? Eg. for sites that have consent banners, embedded videos or embedded maps, can we measure a positive impact from this feature and can we stratify that by site popularity to test whether the impact accrues disproportionately to less popular sites as this argument suggests?Maybe? We could pick a few specific resources that we want to measure, run a test with those specific resources only and then look at the results. Stratifying the results is where things get complicated (maybe UKM?). The simplest case for something like this would be Amazon vs Shopify where the Shopify platform has some pervasive resources and represents a long-tail of individual sites though I'm not sure if the cadence of their updates is faster than a user tends to shop across different sites (limiting the usefulness).
2. There is a fundamental idea that a browser should treat every resource on the web equally (modulo security and some other exceptions). This is violating that idea.
3. The list of resources that will be allowed to bypass the third cache key was created through a reasonably impartial method. Still, because the web is what it is, that resulted in certain entities getting a lot of their resources on the list. If I recall correctly, 30% of the list was Google resources in one form or another.
4. Every resource on the list opens up the potential for the security/privacy issues that the triple keyed cache was meant to protect against. Is there a point where the list has undermined enough of the benefits that the whole triple keyed cache should be dropped instead?
One of the really big problems with the full single-keyed cache was that ALL resources ended up in it, even if they weren't intended to be shared and the regular cache is easily probed (i.e. fetch only-if-cached). That exposed things like evil.com being able to probe for resources from mybank.com that are only loaded for logged-in accounts (which really have no business in being shared). There is a pretty solid line between "third-party resources intended to be shared" and "first-party resources that are inadvertently sniffable". The fuzziness in the proposal comes down to where on the scale of "how common is this intended-to-be-shared resource?" a given resource lies to minimize any information that could be inferred.I agree there's an important fundamental distinction here. What if "third-party resources intended to be shared" was an API? If servers had to explicitly opt resources into the shared cache (with guidance saying that loads of such resources shouldn't be conditional on user state), how would that impact the design? Would we still need to compute a list of "pervasive" resources" or could we safely allow any resource marked as such to be shared when 3PCs are enabled?We'd still need some sense of what information about the user could be leaked in an XS attack (like the maps example) and it's not clear that the provider of the resource can (or should) be able to stipulate that. Something like an old version of jquery served from cdnjs might be marked as "shared" but only used on a single site and it could leak that specific site in the history (or probabilistic across a few sites).
Complexity-wise it would be doable but add a bit of overhead since you can't tell at request time in that case if a request should use the shared cache. It would have to cache-miss every request on the shared cache first before checking the triple-keyed cache and then decide which cache to write it to when it gets the response. This could be limited to third-party requests and the cache check could be a quick memory check but it's still more overhead on the bulk of outbound requests.