v158 · mime sniffing · resource timing

Bucketing a real page's resources

This is why contentType minimizes at all: a RUM tool wants "how much CSS, how much script, how much XML" — a dozen stable buckets, not the raw zoo of every Content-Type a CDN emits. This page audits its own live resource-timing entries (plus a few freshly fetched +xml responses) exactly the way such a tool would.

Spec-compliant classification ships in Chrome 158. Earlier builds: --enable-blink-features=SpecCompliantXmlMimeTypes or chrome://flags/#enable-experimental-web-platform-features. Pre-158, the fetched +xml entries scatter — text/*+xml under its raw type, unsupported types under "" — the inconsistency this feature removes.

This page's resources, by minimized type

The audit reads every buffered resource entry for this page — the stylesheet, the telemetry script, and three XML documents this button fetches from the site's own server under different +xml types.

Live performance.getEntriesByType("resource"), grouped by contentType
bucket (contentType)entrieswhat landed here
Not run yet.

code path

// A RUM bucketing pass — small stable vocabulary, no per-CDN special cases:
const buckets = new Map();
for (const entry of performance.getEntriesByType("resource")) {
  const bucket = entry.contentType;   // "" = the browser has no category
  if (!buckets.has(bucket)) buckets.set(bucket, []);
  buckets.get(bucket).push(entry.name);
}
// Chrome 158: every */*+xml response lands together in "application/xml".
// pre-158:    they scatter — "text/feed+xml" raw, "" for image/diagram+xml.

see also