- From: Drew Wilson <atwilson@google.com>
- Date: Fri, 14 Aug 2009 11:06:30 -0700
Currently, SharedWorkers accept both a "url" parameter and a "name" parameter - the purpose is to let pages run multiple SharedWorkers using the same script resource without having to load separate resources from the server. Per section 4.8.3 of the SharedWorkers spec, if a page loads a shared worker with a url and name, it is illegal for any other page under the same origin to load a worker with the same name but a different URL -- the SharedWorker name becomes essentially a shared global namespace across all pages in a single origin. This causes problems when you have multiple pages under the same domain (ala geocities.com) - the pages all need to coordinate in their use of "name". Additionally, a typo in one page (i.e. invoking SharedWorker("mypagescript?", "name") instead of SharedWorker("mypagescript", "name") will keep all subsequent pages in that domain from loading a worker under that name so long as the original page resides in the page cache. I'd* like to propose changing the spec so that the name is not associated with the origin, but instead with the URL itself. So if a page wanted to have multiple instances of a SharedWorker using the same URL, it could do this: new SharedWorker("url.js", "name"); new SharedWorker("url.js", "name2"); Nothing would prevent a page from also doing this, however: new SharedWorker("other_url.js", "name"); So step 4 in section 4.8.3 would change from this: If there exists a SharedWorkerGlobalScope <#sharedworkerglobalscope> object whose closing <#dom-workerglobalscope-closing> flag is false, whose name attribute is exactly equal to the name argument, and whose location<#dom-workerglobalscope-location> attribute represents an absolute URL that has the same origin as the resulting absolute URL, then run these substeps: to this: If there exists a SharedWorkerGlobalScope <#sharedworkerglobalscope> object whose closing <#dom-workerglobalscope-closing> flag is false, whose name attribute is exactly equal to the name argument, and whose location<#dom-workerglobalscope-location> attribute represents an absolute URL that exactly matches the resulting absolute URL, then run these substeps: The downside of this change is pages might inadvertently create a second instance of a SharedWorker if they inadvertently use the wrong URL. It seems like this is an acceptable tradeoff given the problems described above. What do people think of this? -atw * Thanks to Darin Adler for suggesting this solution -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20090814/e168618a/attachment-0001.htm>
Received on Friday, 14 August 2009 11:06:30 UTC