Media Queries and optimizing what data gets transferred from Tab Atkins Jr. on 2013-01-28 (www-style@w3.org from January 2013) (original) (raw)

On Mon, Jan 28, 2013 at 5:40 AM, Henri Sivonen <hsivonen@iki.fi> wrote:

On Fri, Jan 25, 2013 at 8:28 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:

As Boris has explained, it's not performance issues, but rather author expectations. The average author expects a CSSOM to exist for all the stylesheets in the page, and when the set of matched MQs changes, for the styles to change at the same time, not a network-roundtrip later.

Does the average author really expect anything about CSSOM? I would guess that the average author doesn't use CSSOM beyond the sugaring for the style attribute and maybe getComputedStyle() and even those hidden behind a JavaScript library.

The use cases for fiddling with the style rules of external sheets in the OM (beyond the immediate style attribute sugaring) don't seem that common.

Enough do that you get compat bugs if you break the assumption, apparently. I suspect Boris can provide more detail if you desire.

To me, optimizing the availability of inapplicable style sheet data in the OM over what gets transferred seems totally backwards compared to what the mythical average author wants.

Optimizing for the worst rather than the average is distressingly necessary in the web. :/

If any browser did defer them indefinitely by default, they'd get compat bugs.

This I can believe.

So could the problem be solved by adding an attribute on that turns off the ability to reach the OM of that stylesheet from scripts (at least unless some async access request API is used first) and then making browsers not load stylesheets until they are applicable (i.e. making e.g. printing wait for additional stylesheets to be fetched)?

I like the idea of making the OM completely inaccessible until you explicitly request it, rather than having scripts commonly race against the network request and break when they win.

So, proposal as it stands is:

Add an "async" (or "defer", whatever is closest to the semantics we're trying to achieve) to . I guess currently only rel=stylesheet pays attention to it, but other rels can opt-in as well on their own. (Add it to