- From: Yoav Weiss <yoav@yoav.ws>
- Date: Mon, 18 Mar 2019 09:28:00 +0100
- To: public-web-perf <public-web-perf@w3.org>
- Message-ID: <CACj=BEj9GbAEMvWpWUbSG1DeyaW1Hc6JcPgtZw3bAkg792qgKQ@mail.gmail.com>
Hey all, Minutes from last week's design call are now available <https://docs.google.com/document/d/e/2PACX-1vRt4-tPpYEHBoirB2-gs9svUYy5DLGldk-Cwt0xQToy7hNh8G9HypdqMt58rwAYj8tX6m1ke7hTi2jr/pub>! (apologies for it taking longer than usual. Technical difficulties...) Recording for the call will soon follow. Copying the minutes here for safe keeping: WebPerfWG design meeting notes - March 14th 2019 Present Philippe le Hegaret - W3C Ryosuke Niwa - Apple Nate Schloss, Andrew Comminos - Facebook Nic Jansma - Akamai Gilles Dubuc - Wikimedia Will Hawkins, Benjamin De Kosnik - Mozilla Thomas Kelly - Shopify Steven Bougon - Salesforce Todd Reifsteck - Microsoft Ilya Grigorik, Nicolás Peña, Tim Dresser, Yoav Weiss - Google Chair: Yoav Weiss Admin - TPAC - Which WG meetings should we try to avoid? - Try to avoid conflict with webapps and web platform, service workers - Next meeting March 29th SXG and perf telemetry Ilya: Chrome is shipping SXGs <https://www.google.com/url?q=https://developers.google.com/web/updates/2018/11/signed-exchanges&sa=D&ust=1552900920379000> - you can wrap a document in an SXG, serve it from a random origin, and the browser will consider it as coming from the original origin. This solves the AMP cache use case among others. But what implications does that have for telemtry - if the document was served from a different physical origin, what does that mean to the APIs. In NEL we added an option for SXG failure reporting Should it change navigation timing reporting to say that the navigation is an SXG one? <yoav explains what’s SXGs> For AMP - if you have an AMP site, you can provide an SXG to the edge caches, and when a user clicks on a link to the SXG, the SXG is loaded from AMP CDN, but presented to the user as if it came from the origin. But for perf reporting - should we distinguish those cases? Ryosuke: how does the browser know where to load the resource from Ilya: The links point there. Ilya: let’s draft something about how SXGs work and then get a gut check Benjamin: Gut check is that we need separate telemetry Element Timing for Text elements <https://www.google.com/url?q=https://docs.google.com/document/d/1xhPJnXf0Nqsi8cBFrlzBuHavirOVZBd8TqdD_OyrDGw/edit?usp%3Dsharing&sa=D&ust=1552900920380000> slides <https://www.google.com/url?q=https://docs.google.com/presentation/d/1sblyolOAWQuY9xEsGfJsnjrQv8sg13EyShsNAZhCEbs/edit?usp%3Dsharing&sa=D&ust=1552900920381000> - Nicolás Spec for images - https://wicg.github.io/element-timing/ <https://www.google.com/url?q=https://wicg.github.io/element-timing/&sa=D&ust=1552900920381000> Nicolás: Already presented ET for images, this is focused on text. Want to expose entries for important text components. *presents IDL* For images we want to expose: img, svg, poster and BG-imgs (even if BG images are not an element) Dispatch when image takes significant portion of viewport For text: Text nodes are not elements - need to be aggregated Tim: if you have a <p> with bold text and that bold text is waiting on a font, should the <p> be marked as visible? Yoav: maybe a %age of visible text on the element would be good enough? Tim: that %age can be 100% even. Nicolás: the question is more about “belonging” - which text node belongs to which element? Maybe the answer is all the contained nodes, but it could have performance implications Also, we want automatic registration for text, so we need efficient computations Plh: maybe the first text node of the element? Nicolás: if you have a <p> with links and bold text and many other sub elements, the first is not logical Tim: If you have two similar headlines, where the first child on the first and the second on the second appear first, that would give a different score without real justification. Maybe 1 or 2 levels of nesting are enough.We’re looking into that Nicolás: Another proposal was to look at certain DOM elements that are considered phrasing content <https://www.google.com/url?q=https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories%23Phrasing_content&sa=D&ust=1552900920383000>, which is basically text content. Needs more research and look at real websites. Wondered if anyone has any clever ideas. Todd: Just read the explainer. Appears you’re properly breaking down the problem. Tim: If we show that finite depth covers the problem well, does that seem like a reasonable solution to the WG? Ryosuke: The depth of DOM trees is rarely relevant. The tricky cases are overflows, clipping and text wrapping. So computing the bounding box of text is super expensive because of that. I don’t think limiting the depth will solve the problem Tim: it reduces the set of elements that we care about. Ryosuke: sure, but the few elements you have may be pathological and trigger full page relayout. Tim: In these cases, the ET entries will not be surfaces until the content is laid out, so no need to force layout. Ryosuke: Sure, but you’d still need to compute the bounding boxes. Need to combine the rects regarding overflows. If we can ignore overflows that could be easy. Tim: good point Plh: have you looked at CSS generated content Nicolás: that’s a problem… Assuming we need to define the text node’s alignment with an element, we want to define the time as the first time of painting for all elements, so rendering with a fallback font That’s relevant, because for an element to be considered rendered, we want to wait for all nodes. If contents is generated dynamically, that could be problematic Tim: CSS is not async so should be fine Nicolás: yeah, CSS would be fine. JS would be problematic Otherwise, size of elements, we need to define what it is Proposing to take the sum of all bounding boxes, for performance reasons Could overlap, but in the majority of cases, should be close enough Nic: pixel value or %age value? Nicolás: same problem as images. Ryosuke: Why not number of pixels? Tim: may not translate well across device form factors Ryosuke: and on resize? Tim: we will use the original viewport size Ryosuke: If the user is resizing while the page is loading, the values may be off Tim: Yeah, we should give some more thought to that Nicolás: IntersectionRect: current proposal to define as the smallest rect that contains all the nodes Another option is to expose all the rects, one for each text node, but I don’t think it provides a lot of value. Could be confusing. Current proposal works fine for rectangles, but can over-estimate for more complex element layouts. Ryosuke: computing the rect of text is very expensive, so that’s a problem. Rect of an element is faster. We can’t figure out the bounding rect of each element without figuring out if text is visible or not. Tim: The explainer calls out clipping and oclusion cases. It’s probably fine for the primary use cases. But we need to reason through the performance. Ryosuke: maybe forget about text and just consider the element box and use that instead? Nicolás: that’s an option Tim: You can have a large element with a little bit of text in it, so the important text is not that important Nicolás: there are tradeoffs between performance and accuracy More thoughts? Performance Timeline buffering <https://www.google.com/url?q=https://github.com/w3c/performance-timeline/issues/81%23issuecomment-462513499&sa=D&ust=1552900920386000> How to handle buffering once we ship the buffered flag? Want people to ship performance observer, but currently we don’t expose entries from the past. Wrote down a proposal in the comment. Thoughts? Tim: new entry types we want them to be available and we want that information to be available to developers, so need to refactor. The browser also needs to keep buffering, so we need to determine that buffer size, but in a simple way: buffer until the buffer is full, then entries get dropped Ilya: should we also break buffering in RT Nicolás: maybe not at first. This is more about new entry types. Long tasks is a special case, as right now we don’t buffer them at all, but header registration can help us do that Event timing and element timng are good candidates Plh: so you have a buffer for each type, but may not make it available for all types. In the current algorithm we have a flag. Why didn’t we use the same? Tim: we need things that return from PO but not from getEntries Nicolás: if you had a PO that observes afterwards, it’s currently gone. The buffered flag should resolve that Todd: everything you say there looks fine. Waiting for final spec for full judgement Nicolás: will add you as a reviewer to the PR Ilya: so if I’m making a new thing, what’s the guidance? Nicolás: I haven’t specified guidance Ilya: are we trying to drive people away from getEntries? Nicolás: yes. We would need to add some flags to entries defined by relying specifications. We would need to provide a max size for the buffer as well. Tim: so maybe provide also a brief snippet of what integration may look like Ilya: or a separate document. *describes the new behavior* Todd: if we want PO to be the only new thing, but maybe we also need to be able to set buffer sizes in headers or HTML Tim: Yeah, that was our thinking. Start with a default size and eventually have a way to set it Plh: For nav timing we only need an entry of 1. Have we solved the problem of entries that were emitted before the PO registered? Yoav: this is solving exactly that problem On Wed, Mar 13, 2019 at 8:21 AM Yoav Weiss <yoav@yoav.ws> wrote: > Hey all, > > Let's talk about new and exciting webperf features tomorrow! :D > On the agenda > <https://docs.google.com/document/d/10dz_7QM5XCNsGeI63R864lF9gFqlqQD37B4q8Q46LMM/edit?pli=1#heading=h.mrrkl83ul16p> > we currently have: > > - SxG and webperf telemetry — igrigorik@ > - Element Timing for Text Elements > <https://docs.google.com/document/d/1xhPJnXf0Nqsi8cBFrlzBuHavirOVZBd8TqdD_OyrDGw/edit?usp=sharing> > - npm@ > - Performance Timeline buffering > <https://github.com/w3c/performance-timeline/issues/81#issuecomment-462513499> > - npm@ > - In-progress resource requests > <https://github.com/w3c/resource-timing/issues/137> - npm@ > > But it's very likely we'll add more stuff to the agenda and/or shuffle > things around. If you have anything you want to discuss, don't be shy. > > The hangout for the call is the usual one > <https://meet.google.com/nog-ttdz-myg?hs=122>. > > See y'all tomorrow! :) > Yoav >
Received on Monday, 18 March 2019 08:28:43 UTC