On Aug 30, 2013, at 5:54 PM, Glenn Maynard <gl...@zewt.org> wrote:

> I don't like the name "jit", because it already has a different meaning when 
> talking about scripting.  If this was for CSS or WebVTT or something else 
> other than scripts, it wouldn't be as bad...
> 
> On Fri, Aug 30, 2013 at 7:22 PM, Ryosuke Niwa <rn...@apple.com> wrote:
> I don't quite understand why we need two values for "whenneded".
> 
> Why can't we simply have "prefetch" (since we already use that term in the 
> link element) and "needs" (I'd prefer calling it "requires") content 
> attributes?
> 
> When a script element has the prefetch attribute, it doesn't execute until 
> execute() is called upon the element unless
> (i.e. the script is executed immediately when the script has been loaded) if 
> at least one of its dependencies is not a prefetch
> (i.e. doesn't have the "prefetch" content attribute).
> 
> I'm not sure what you mean (skipping the parenthetical this says "unless if", 
> so I'm not sure how to parse that), but "prefetch" sounds like something 
> different than "jit".

Yes.  "Prefetch" is like "noexecute" if there are no dependencies that require 
immediate execution.  But it behaves like "jit" if there are dependencies.

Example 1.
<script src="A.js" prefetch></script>
<script src="B.js" requires="C.js" prefetch></script>
<script src="C.js" prefetch></script>
Neither A.js, B.js, nor C.js are executed until execute() is called on each 
element.

Example 2.
<script src="A.js" prefetch></script>
<script src="B.js" requires="C.js"></script>
<script src="C.js" prefetch></script>
Both C.js and B.js are executed respectively once they're loaded since C.js 
requires B.js.

Example 2.
<script src="A.js" prefetch></script>
<script src="B.js" requires="C.js"></script>
<script src="C.js" requires="A.js" prefetch></script>
A.js, C.js, B.js are executed respectively because "B.js" requires "C.js" that 
in turn requires "A.js"

> The use case was "download several scripts, then execute them all at once".  
> I'm not sure about that use case, but a prefetch hint doesn't seem right for 
> that.  You'd end up downloading the scripts even if they're never used.

There was a use case for fetching a script without ever executing them until 
execute() is called.

I'll argue, however, that UAs should have the option NOT to fetch such a script 
immediately based on the network condition, bandwidth, etc...  That's why I 
like the name "prefetch" because it implies a weak requirement.

Another problem I'm interested in hearing Web developer's opinion is how we can 
manage the priority of resource requests.  e.g. scripts only used for some 
obscure feature on a page can be requested later;  Web browser should be able 
to prioritize requests for the page's main assets such as the tile image, web 
fonts, etc...

- R. Niwa

Reply via email to