W3C home > Mailing lists > Public > www-style@w3.org > October 2012

Re: [cssom] Make CSSStyleSheet constructable

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Fri, 19 Oct 2012 10:47:50 -0700
Message-ID: <CAAWBYDDkkG6_Q7k71F=BYEsfKbvzRCAwZG6td2KQGSqUnMdN-Q@mail.gmail.com>
To: Boris Zbarsky <bzbarsky@mit.edu>
Cc: www-style@w3.org
On Wed, Oct 17, 2012 at 5:33 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote:
> On 10/17/12 8:16 PM, Tab Atkins Jr. wrote:
>> The "scoping" nature of a TreeScope is good for preventing stray
>> styles from leaking out of the component, but it's problematic when
>> you have, say, a thousand copies of the same component on the page,
>> all of which contain their own, identical, copies of the same
>> stylesheet.
>
> This is an inline stylesheet, not a linked stylesheet?

Generally, both.


>> Our attempts to date have been somewhat hacky, unfortunately.
>
> I'm not sure why.  Gecko already does such sharing on the style data of
> linked stylesheets.  It would be easy to extend it to inline stylesheets if
> needed.

Copy-on-write semantics for style sharing is totally doable, don't get
me wrong.  However, for this case (sharing among components) we feel
it has the wrong ergonomics.

I'll explain.  Normally, if you happen to share the same stylesheet
across multiple documents, the docs are all fairly independent.  (This
is my assumption, at least.)  This means that, if one doc does some
CSSOM manipulation of the stylesheet, thus forcing a copy, it's not
generally likely that the rest of the docs will do the same.

Components are likely to be different.  Since they all run identical
script, if any one instance of a component does some CSSOM
manipulation, it's likely that they *all* will.  Thus, we feel that
simply relying on copy-on-write optimizations will lead to a bad place
where performance is normally great, but one small tweak to your
scripts will throw it in the toilet as you suddenly generate a
thousand separate stylesheets on production pages.  We also feel that
it's unlikely that this will show up in normal developer testing, as
few devs will stress-test with thousands of instances, while that kind
of thing will be reasonably common for certain types of components in
production (+1 buttons, etc.).

So, an explicit sharing mechanism that doesn't have an implicit
failure mode feels like the right direction to aim for, in our minds.

~TJ
Received on Friday, 19 October 2012 17:48:38 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:21:01 GMT