On Fri, 12 Feb 2010 12:51:03 +0100, Maciej Stachowiak <[email protected]> wrote:
On Feb 12, 2010, at 3:47 AM, Maciej Stachowiak wrote:
On Feb 12, 2010, at 3:19 AM, Anne van Kesteren wrote:
On Fri, 22 Jan 2010 14:11:40 +0100, Anton Muhin <[email protected]> wrote:
Is it possible to allow caching for those cases?  Firefox caches those
node lists for a long time (Maciej found the related bug
https://bugzilla.mozilla.org/show_bug.cgi?id=140758).  IE8 caches as
well.   Opera, Safari and Chrome do not.

Sorry for the somewhat late reply. We'd prefer not to change the specification here and keep the requirement. We're afraid of potential hard to detect incompatibility bugs if you sometimes cache and sometimes don't. We're also not convinced that you cannot get the performance win by other means.

Since Firefox and IE both cache, how would it create compatibility bugs for other browsers to do so as well? I think we should remove the requirement unless Firefox and IE are willing to change their implementations.

I would hope they fix their bugs in due course, yes. Specifically leaving the behavior undefined seems like a bad idea. We know that from other areas.


In addition, I should mention that likely the only observable difference is in setting custom ("expando") properties. If you make two equivalent requests for a NodeList, setting a property on one will show up on the other only in the case where there was caching. However, I think use of expando properties on NodeLists is unlikely. Sacrificing a lot of performance for a marginal hypothetical improvement in predictability of behavior does not seem like a good tradeoff.

Is it really a lot of performance? Our developers are not that convinced.

Also it has been suggested to me that just-in-time optimizations might not work well if different users start polluting the same object (if nodelists are shared).


--
Anne van Kesteren
http://annevankesteren.nl/

Reply via email to