{"id":17155,"date":"2017-02-09T16:56:23","date_gmt":"2017-02-09T21:56:23","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=17155"},"modified":"2017-02-20T17:16:21","modified_gmt":"2017-02-20T22:16:21","slug":"most-of-the-web-really-sucks-if-you-have-a-slow-connection","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2017\/02\/09\/most-of-the-web-really-sucks-if-you-have-a-slow-connection\/","title":{"rendered":"Most of the Web Really Sucks If You Have a Slow Connection"},"content":{"rendered":"<p><a href=\"https:\/\/danluu.com\/web-bloat\/\">Dan Luu<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=13601451\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/danluu.com\/web-bloat\/\">\n<p>Despite my connection being only a bit worse than it was in the 90s, the vast majority of the web wouldn&rsquo;t load. Why shouldn&rsquo;t the web work with dialup or a dialup-like connection? It would be one thing if I tried to watch youtube and read pinterest. It&rsquo;s hard to serve videos and images without bandwidth. But my online interests are quite boring from a media standpoint. Pretty much everything I consume online is plain text, even if it happens to be styled with images and fancy javascript.<\/p>\n<p>[&#8230;]<\/p>\n<p>More recently, I was reminded of how poorly the web works for people on slow connections when I tried to read a joelonsoftware post while using a flaky mobile connection. The HTML loaded but either one of the five CSS requests or one of the thirteen javascript requests timed out, leaving me with a broken page. Instead of seeing the article, I saw <a href=\"https:\/\/twitter.com\/danluu\/status\/823286780560437248\">three entire pages of sidebar, menu, and ads<\/a> before getting to the title because the page required some kind of layout modification to display reasonably. Pages are often designed so that they&rsquo;re hard or impossible to read if some dependency fails to load. On a slow connection, it&rsquo;s quite common for at least one depedency to fail.<\/p>\n<p>[&#8230;]<\/p>\n<p>While it&rsquo;s easy to blame page authors because there&rsquo;s a lot of low-hanging fruit on the page side, there&rsquo;s just as much low-hanging fruit on the browser side. Why does my browser open up 6 TCP connections to try to download six images at once when I&rsquo;m on a slow satellite connection? That just guarantees that all six images will time out!<\/p>\n<p>[&#8230;]<\/p>\n<p>For another level of ironic, consider that while I think of a 50kB table as bloat, Google&rsquo;s AMP currently has &gt; 100kB of blocking javascript that has to load before the page loads! There&rsquo;s no reason for me to use AMP pages because AMP is slower than my current setup of pure HTML with a few lines of embedded CSS and the occasional image, but, as a result, I&rsquo;m penalized by Google (relative to AMP pages) for not &ldquo;accelerating&rdquo; (deccelerating) my page with AMP.<\/p>\n<\/blockquote>\n<p>Previously: <a href=\"http:\/\/mjtsai.com\/blog\/2016\/10\/24\/web-bloat-score-calculator\/\">Web Bloat Score Calculator<\/a>, <a href=\"http:\/\/mjtsai.com\/blog\/2017\/01\/18\/the-problem-with-amp\/\">The Problem With AMP<\/a>.<\/p>\n\n<p>Update (2017-02-10): <a href=\"https:\/\/twitter.com\/BiIIMurray\/status\/829831015757705216\">Bill Murray<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/BiIIMurray\/status\/829831015757705216\"><p>Before you marry a person you should first make them use a computer with slow internet to see who they really are.<\/p><\/blockquote>\n\n<p>Update (2017-02-20): See also: <a href=\"https:\/\/twitter.com\/juhosnellman\/status\/829318066592968704\">Juho Snellman<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dan Luu (Hacker News): Despite my connection being only a bit worse than it was in the 90s, the vast majority of the web wouldn&rsquo;t load. Why shouldn&rsquo;t the web work with dialup or a dialup-like connection? It would be one thing if I tried to watch youtube and read pinterest. It&rsquo;s hard to serve [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1463,338,346,96],"class_list":["post-17155","post","type-post","status-publish","format-standard","hentry","category-technology","tag-accelerated-mobile-pages-amp","tag-css","tag-javascript","tag-web"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=17155"}],"version-history":[{"count":5,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17155\/revisions"}],"predecessor-version":[{"id":17260,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/17155\/revisions\/17260"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=17155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=17155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=17155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}