6 ms·
There's a lot of Google negativity here (perhaps not without reason), but when you view the AMP spec and what it tries to solve for, it feels like a smart move
by toddmorey 11y ago
There's a lot of Google negativity here (perhaps not without reason), but when you view the AMP spec and what it tries to solve for, it feels like a smart move to help broaden the adoption of sensible but poorly understood optimizations: https://www.ampproject.org/docs/get_started/technical_overview.html#dont-let-extension-mechanisms-block-rendering https://www.ampproject.org/docs/get_started/technical_overvi...
Those optimizations are worth looking over even if you don't plan on adopting AMP.
I do think that rather than requiring direct use of AMP for specialized search placement, it should really measure site performance and only ensure your site meets the same benchmark, no matter what you do to optimize.
Google may not be a perfect ally of the open web, but I like this approach much more than what I've seen from Facebook.
- pcwalton 11y agoSome of those guidelines (avoid style recalculation and use only "GPU-accelerated" animations) are specific to Chrome (and to other browsers of today). Style recalculation is needlessly slow today due to the lack of parallelism and typed CSSOM. And there's no such thing as a "GPU-accelerated" animation, either in the spec or technically: all animations can be run on the GPU with minimal state changes. It's just that browsers found it easiest to only optimize a small subset of cases (in the case of CSS animations, really small--transform and opacity), so as to keep around their legacy, originally-CPU-based, painting infrastructure. It's good that they did that, because it let us get to some degree of graphics acceleration quicker, but we can do so much better. I'd prefer to just improve the browsers instead of putting the burden on Web authors.
- arohner 11y agoSure, I'd love browser improvements too, but at the end of the day, you can't automatically optimize everything from the browser. The browser can't magically fix a 1MB JS file in <head>, or serving 2000px wide images to iPhones. >I'd prefer to just improve the browsers instead of putting the burden on Web authors. A cynical answer is that Google released this because web authors haven't done a good enough job making fast pages.
- pcwalton 11y ago> Sure, I'd love browser improvements too, but at the end of the day, you can't automatically optimize everything from the browser. The browser can't magically fix a 1MB JS file in <head>, or serving 2000px wide images to iPhones. Sure, I agree that many of the optimizations suggested are good practice. (Note, though, that serving 2000px wide images to iPhones is fixable in the browser, with downscale on decode.) :) > A cynical answer is that Google released this because web authors haven't done a good enough job making fast pages. It's not cynical—that's the exact motivation of AMP. My point is that it cuts both ways: we need to keep improving the browser, as there are still massive opportunities for performance improvements.
- arohner 11y ago> (Note, though, that serving 2000px wide images to iPhones is fixable in the browser, with downscale on decode.) :) From a rendering perspective, yes. From a "make this page load faster", no, because the network download time is 10x-100x larger than the processing time.
- cromwellian 11y agoI think the browser specs are broken such there will always be pathological cases, and always cases where 'you're on the performance rails'. End users don't care. This is no different on any other platform. If you program games directly to OpenGL, for example, you run into all kinds of different bottlenecks, both CPU and GPU. Depending on the pipeline of the various GPUS, and what kinds of hazards they have, there's stuff you have to avoid, or branching paths you have to handle to get good performance. If you use SQL databases, not all databases can handle all queries optimally. I think it is asking too much of browsers to give them such a huge surface area spec as HTML and CSS, and then ask for them to optimize everything so there's no slow paths. The practical reality is, there's always a subset of specs known to be fast and well supported and developers just need to know what that is.
- pcwalton 11y ago> I think the browser specs are broken such there will always be pathological cases, and always cases where 'you're on the performance rails'. End users don't care. In the case of GPU acceleration, the specs are not broken. There is no fundamental reason why animations on arbitrary properties cannot be GPU accelerated and some can be. Ask anyone who's worked with Scaleform whether rapidly changing vector graphics (which is all these animations are) has to be slow on mobile. For style recalculation, maybe, maybe not; it's not clear to me that browsers are worse than native app frameworks here, except that we're missing Typed CSSOM, which is important spec work. > This is no different on any other platform. If you program games directly to OpenGL, for example, you run into all kinds of different bottlenecks, both CPU and GPU. Depending on the pipeline of the various GPUS, and what kinds of hazards they have, there's stuff you have to avoid, or branching paths you have to handle to get good performance. And game engine authors are fed up with it, which has led to Metal, DX12, and Vulkan. It's not a good way to treat developers; we should try to give them APIs in which, as much as possible, everything is fast. I think the Web APIs can be that, if implemented optimally. > I think it is asking too much of browsers to give them such a huge surface area spec as HTML and CSS, and then ask for them to optimize everything so there's no slow paths. I'm not saying that we have to pretend everything in HTML and CSS can be made equally fast. My point is that, in many areas, browsers have done a bad job of even trying to optimize broadly. Take animations, for example: the only thing browsers optimize is two properties out of hundreds, transform and opacity. This is exceptionally problematic, given that there's no technical reason why this has to be the case. I just gave a talk about this a few days ago :)
- cramforce 11y agoYou know, I think it would be great if web browsers fixed things. AMP is fixing a very real problem that users have today. If and when browsers change (including those used by a lot of people that only update once a year) AMP can just change its guidelines. These are things people have to do today anyway to get fast sites. AMP just packages up in an easy to consume package.
- ender7 11y agoGoogle has repeatedly said that they will not give preferential treatment for AMP pages. Almost every publication [1] and comment I've seen gets this wrong. According to official comment, the ranking algorithm will prioritize page speed, and AMP is a good way to achieve that. BloombergBusiness uses some questionable sentence structure in order to imply the opposite, but that's on them: AMP isn’t “a signal we use in ranking” pages, Besbris said. He declined to comment about whether AMP pages would rank higher, though he said some of the signals Google uses for search include whether a page is mobile friendly and how rapidly it loads -- two problems that AMP seeks to tackle. [1] e.g. http://adage.com/article/digital/google-amp-launch-looms-search-engine-scores-follow/302599/ http://adage.com/article/digital/google-amp-launch-looms-sea... See their retraction at the end of the article.
- daheza 11y agoAll CSS must be inline and size-bound Does this mean that only inline styling is supported? <div style="..."> Or just that styling should be included on the page in a <style> tag.