- From: Nathanael D. Jones <nathanael.jones@gmail.com>
- Date: Wed, 6 Feb 2013 10:33:10 +0100
- To: Yoav Weiss <yoav@yoav.ws>
- Cc: Mat Marquis <mat@matmarquis.com>, "public-respimg@w3.org" <public-respimg@w3.org>
- Message-ID: <CAG3DbfVz++OK8RSD+Dw1iHhO34KV7t1WHBjK+Uif-TBZGC+=hQ@mail.gmail.com>
@Yoav Prefetching does *not* need to be delayed until layout is calculated. I'm suggesting that prefetching be performed the same way it is currently done for CSS background-images. Once the markup and the css have been cross-referenced, the download begins. This can occur as early as the first CSS signal tag (if spec'd), the first non-media query selector after a matching rule, or as late as the end of the last CSS request. From what I understand about CSS parser implementations, an incremental data structure is available during parsing, which should offer enough data to make an informed pre-fetch decision. If javascript later creates a new element or changes key parameters (such as min-width/min-height,max-width/max-height), then a final fetch is required. This is the status quo for background-image and img prefetching, so why the fixation on waiting until render for *pre*fetching? Pre-fetching, by nature, is optimistic. We don't wait until render to pre-fetch CSS background-images, despite them being more likely to be affected; why assume a worst-case browser implementation for `<picture>`? @Mat I communicate with customers implementing responsive image resizing (and art direction based on face detection) on a daily basis; it's my job, and RESTful image processing is my company's focus. We already have an implementation based on the current <picture> spec, and frankly, the harder `<picture>` is to use directly, the more people will need our help.... but that's not what's best for the web. 1. I'm not suggesting *any* changes to CSS Media Queries whatsoever 2. I'm not suggesting we consult the size of the container, rather the CSS size *constraints* (min-*, max-*) of the picture element itself. Unless percentage units are used, informed *pre*fetching can occur before layout. 3. The naming of height/width attributes is unimportant. I would not consider it repurposing, as they would behave as if they were applied to a 'img' element, but if it harms backwards compatibility somehow, let's look at alternate options, such as w/h and size. 4. Thus my e-mail to you on the 4th, in hopes you would provide guidance on the appropriate forum for this discussion. Best regards, Nathanael Jones On Tue, Feb 5, 2013 at 11:53 PM, Yoav Weiss <yoav@yoav.ws> wrote: > Nathanael, > > I'd like to add that you are highly underestimating the amount of delay > postponing fetching of images until after the page has layout will > introduce. > > The average delay of a 4G network is around 150 ms. For a 3G network it is > around 400 ms [1] > > That means that in the best case scenario of a page with a single small > CSS (that fits into the initial congestion window), and no External > JavaScript in the head, we are looking at at least 400 ms delay in the > page's overall page load for 3G users. That is a lot! > > Let's look at a real life loading scenario of a Web page containing > several CSS files from different hosts (external font library is a common > case), as well as a few external JavaScript files from various hosts (CDN > based JQuery & local scripts) > > In this case you are looking at at least 2-3 delays more (establishing > connections, requesting & fetching resources, which at least some are > bigger than the 15KB of the initial congestion window), even with SPDY. > Add to that CSS & JS parsing & rendering/execution, creation of DOM, > RenderTree and Layout (none of which is negligable on mobile devices), and > you have added 2-3 seconds to an average page. > > I'm afraid that the performance regression that will result from > waiting for layout before requesting images is just too much for it to be > a viable option. > > Yoav > > [1] > http://www.igvita.com/2012/07/19/latency-the-new-web-performance-bottleneck/ > > > On Tue, Feb 5, 2013 at 11:27 PM, Mat Marquis <mat@matmarquis.com> wrote: > >> >> On Feb 5, at 3:36 PM, Nathanael D. Jones wrote: >> >> I think many people were expecting a solution based on element size. >> >> >> I would be interested in seeing data to support this assertion. >> >> While that may not be a use-case you've aimed to solve, *I think it >> should be the *primary* use-case*, as it provides a *simple solution to >> nearly every other use-case documented*. >> >> *Here's my full proposal:* >> >> https://gist.github.com/nathanaeljones/4706093 >> >> >> >> Where your goal is to selectively load images based on the size of the >> containing element and you’re comfortable delaying the requests for those >> assets until after the layout has been painted, the functionality you’re >> looking for could be easily accomplished using JavaScript and data >> attributes. >> >> In terms of the above as a native solution: your proposal involves >> heavily modifying the syntax of media queries (with syntactical overlap >> between your proposal and the existing method of specifying media types), >> repurposing `width` and `height` attributes, and delaying image requests to >> well beyond the initial parsing of the markup (waiting until CSS and JS is >> requested, transferred, and rendered to begin requesting image sources). As >> a first step, I might recommend reaching out to browser representatives to >> determine the implementation viability of your proposal—there are several >> members of the RICG that would likely be willing to offer you feedback. >> >> I understand that this is a subject to which a great deal of people have >> given thought. I’m happy to continue this discussion on the RICG mailing >> list, but I’m sure you can understand where we won’t be withdrawing the >> `picture` proposal based on proposals that haven’t yet been thoroughly >> vetted or discussed at any length. The HTML WG Administrative list doesn’t >> seem like the appropriate venue for those discussions. >> >> Thanks, >> Mat Marquis >> >> >> For the record: >> >> I do not believe the advantages of slightly-earlier prefetching outweigh >> the benefits of a CSS-based approach. There are many possible optimizations >> available to ensure the delay can be reduced to ~40ms for a cache miss >> (Probably ~15ms with SPDY), and it is simply not worth the markup >> complexity required. >> >> Best regards, >> Nathanael Jones >> >> >> [ snip ] >>> >>> >>> >> >> >
Received on Wednesday, 6 February 2013 09:34:00 UTC