<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Making the Internet faster in 5 minutes (?)</title>
	<atom:link href="http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/feed/" rel="self" type="application/rss+xml" />
	<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/</link>
	<description>A blog and stuff.</description>
	<lastBuildDate>Sat, 04 Sep 2010 22:47:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Dman</title>
		<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/comment-page-1/#comment-30</link>
		<dc:creator>Dman</dc:creator>
		<pubDate>Thu, 30 Jul 2009 03:05:34 +0000</pubDate>
		<guid isPermaLink="false">http://infinity-infinity.com/?p=60#comment-30</guid>
		<description>Look at http compression. It does this, and more, for both the headers and content. Most modern servers (apache) support this, as do most modern browsers.

The reason for the headers is so that you can issue a head request to see if the page is updated, and if not, serve it from a cache (on your machine, the ISP, or anywhere down stream)

Why? Well, things like google also only have to issue a head request to know if it&#039;s worth re-crawling your page. 99.9% of pages on the net are old, stale, and never change anymore. This saves an enoromous amount of bandwidth and processing for them.</description>
		<content:encoded><![CDATA[<p>Look at http compression. It does this, and more, for both the headers and content. Most modern servers (apache) support this, as do most modern browsers.</p>
<p>The reason for the headers is so that you can issue a head request to see if the page is updated, and if not, serve it from a cache (on your machine, the ISP, or anywhere down stream)</p>
<p>Why? Well, things like google also only have to issue a head request to know if it&#8217;s worth re-crawling your page. 99.9% of pages on the net are old, stale, and never change anymore. This saves an enoromous amount of bandwidth and processing for them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendon</title>
		<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/comment-page-1/#comment-26</link>
		<dc:creator>Brendon</dc:creator>
		<pubDate>Tue, 21 Jul 2009 10:25:32 +0000</pubDate>
		<guid isPermaLink="false">http://infinity-infinity.com/?p=60#comment-26</guid>
		<description>Thank you both for your informative, extended comments. I agree that using binary representation of information and it&#039;s meta-information would save a lot more bandwidth. However, the main point of my argument is why these standards were not developed in a binary standard form when they were created.

I don&#039;t believe this would be &quot;premature optimization&quot;; I believe it would be sensible. If you are sending useless data between machines millions (billions?) of times per day, then it would make sense to remove the redundant information. Maybe it&#039;s too late now, though.

Thank you for the link to that paper.

Thanks,
Brendon.</description>
		<content:encoded><![CDATA[<p>Thank you both for your informative, extended comments. I agree that using binary representation of information and it&#8217;s meta-information would save a lot more bandwidth. However, the main point of my argument is why these standards were not developed in a binary standard form when they were created.</p>
<p>I don&#8217;t believe this would be &#8220;premature optimization&#8221;; I believe it would be sensible. If you are sending useless data between machines millions (billions?) of times per day, then it would make sense to remove the redundant information. Maybe it&#8217;s too late now, though.</p>
<p>Thank you for the link to that paper.</p>
<p>Thanks,<br />
Brendon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Hess</title>
		<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/comment-page-1/#comment-25</link>
		<dc:creator>James Hess</dc:creator>
		<pubDate>Tue, 21 Jul 2009 01:59:40 +0000</pubDate>
		<guid isPermaLink="false">http://infinity-infinity.com/?p=60#comment-25</guid>
		<description>To share what I think a relevant quote here:
&quot;There is no doubt that the grail of efficiency leads to abuse. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a  strong negative impact when debugging and maintenance are considered.  We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.&quot;   
-- Donald Knuth

It&#039;s not obvious that there would be a substantial improvement by a small reduction in header length; we need a quantitative measure for RTT effects and number of packets in real-world implementations to say.  But there would definitely be a substantial interoperability cost; adjusting server and client implementations, and working out a usable migration path, takes more than 5 minutes.

HTTP is such a widely used protocol, that nobody would accept the flag day. To get adoption transition must be smooth.
In addition, one of the benefits of HTTP is the headers aren&#039;t set in stone, new ones can be added,  servers and clients can support custom headers, including core extensions like basic authentication.

Using single characters to designate header types basically limits the extensibility.

Your HTTP client has to somehow figure out if the server supports this new header compression extension,  which means (most likely) an additional round trip, which takes additional latency  (the page will take longer to load, since the client has to somehow figure out that the server supports this new header format).

Or choose to break interoperability, in violation of the robustness principle.

But interoperability and Latency are _everything_ in HTTP on the World wide web, the delay time to actually get a request received is what matters, not the precise size of the request; especially in the 21st century, the age of broadband, a few hundred extra bytes extra per request are almost negligible, as long as the request still fits in one frame.

The complexity avoided by having human-friendly headers may be well worth the small number of extra bytes.

As for the interoperability issues: if the web server doesn&#039;t speak the same language as you, then you don&#039;t get to see any web page, which is even worse than transferring more bytes.  There is currently a HTTP standard.  It would be essential for any improvements to ensure backwards compatibility,  and I don&#039;t see an obvious way to introduce a change like this without unacceptable costs.

In addition, the full extended header (even without the shortening)  very likely fits into one packet,  and has the advantage that humans can easily disseminate and construct headers.

Protocols that humans can enter messages in directly are easier to troubleshoot; it&#039;s a great debugging aid to be able to simply telnet to a web server, and type in a HTTP request.

The real consumer of HTTP bandwidth is the file itself;  typically HTML or XML, which is a text-based language.    There is a standards-based compression option to use deflate/gzip, when requested by the client.


However, it might be of some benefit, if a new standard some form of &#039;Binary XML/HTML&#039;  were developed.  In this case, you&#039;d replace tags like  the &#039;body&#039;  tag  with a 16-bit code.

Instead of &#039;img&#039; tags referring to external files, the img object would contain a binary pointer to the image,  which would exist in the same binary stream as the text (probably at the end, so lower-bandwidth text could be rendered first).

In fact, you&#039;d no longer need start and stop tags at all, just a tag-type bit length, and then binary pointers to objects in the document.


Optimizing the  size of the actual payload has benefits, because the payload is normally a larger portion of the data being transferred.

In addition, an extra round trip shouldn&#039;t be required, the client can declare it supports the special document type by using HTTP headers.</description>
		<content:encoded><![CDATA[<p>To share what I think a relevant quote here:<br />
&#8220;There is no doubt that the grail of efficiency leads to abuse. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a  strong negative impact when debugging and maintenance are considered.  We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.&#8221;<br />
&#8211; Donald Knuth</p>
<p>It&#8217;s not obvious that there would be a substantial improvement by a small reduction in header length; we need a quantitative measure for RTT effects and number of packets in real-world implementations to say.  But there would definitely be a substantial interoperability cost; adjusting server and client implementations, and working out a usable migration path, takes more than 5 minutes.</p>
<p>HTTP is such a widely used protocol, that nobody would accept the flag day. To get adoption transition must be smooth.<br />
In addition, one of the benefits of HTTP is the headers aren&#8217;t set in stone, new ones can be added,  servers and clients can support custom headers, including core extensions like basic authentication.</p>
<p>Using single characters to designate header types basically limits the extensibility.</p>
<p>Your HTTP client has to somehow figure out if the server supports this new header compression extension,  which means (most likely) an additional round trip, which takes additional latency  (the page will take longer to load, since the client has to somehow figure out that the server supports this new header format).</p>
<p>Or choose to break interoperability, in violation of the robustness principle.</p>
<p>But interoperability and Latency are _everything_ in HTTP on the World wide web, the delay time to actually get a request received is what matters, not the precise size of the request; especially in the 21st century, the age of broadband, a few hundred extra bytes extra per request are almost negligible, as long as the request still fits in one frame.</p>
<p>The complexity avoided by having human-friendly headers may be well worth the small number of extra bytes.</p>
<p>As for the interoperability issues: if the web server doesn&#8217;t speak the same language as you, then you don&#8217;t get to see any web page, which is even worse than transferring more bytes.  There is currently a HTTP standard.  It would be essential for any improvements to ensure backwards compatibility,  and I don&#8217;t see an obvious way to introduce a change like this without unacceptable costs.</p>
<p>In addition, the full extended header (even without the shortening)  very likely fits into one packet,  and has the advantage that humans can easily disseminate and construct headers.</p>
<p>Protocols that humans can enter messages in directly are easier to troubleshoot; it&#8217;s a great debugging aid to be able to simply telnet to a web server, and type in a HTTP request.</p>
<p>The real consumer of HTTP bandwidth is the file itself;  typically HTML or XML, which is a text-based language.    There is a standards-based compression option to use deflate/gzip, when requested by the client.</p>
<p>However, it might be of some benefit, if a new standard some form of &#8216;Binary XML/HTML&#8217;  were developed.  In this case, you&#8217;d replace tags like  the &#8216;body&#8217;  tag  with a 16-bit code.</p>
<p>Instead of &#8216;img&#8217; tags referring to external files, the img object would contain a binary pointer to the image,  which would exist in the same binary stream as the text (probably at the end, so lower-bandwidth text could be rendered first).</p>
<p>In fact, you&#8217;d no longer need start and stop tags at all, just a tag-type bit length, and then binary pointers to objects in the document.</p>
<p>Optimizing the  size of the actual payload has benefits, because the payload is normally a larger portion of the data being transferred.</p>
<p>In addition, an extra round trip shouldn&#8217;t be required, the client can declare it supports the special document type by using HTTP headers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jamie Flournoy</title>
		<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/comment-page-1/#comment-24</link>
		<dc:creator>Jamie Flournoy</dc:creator>
		<pubDate>Mon, 20 Jul 2009 23:59:40 +0000</pubDate>
		<guid isPermaLink="false">http://infinity-infinity.com/?p=60#comment-24</guid>
		<description>&gt;why aren’t we making HTTP and other commonly used protocols highly optimised?

Because it isn&#039;t worth it. Yes you could save a few bytes in each header, but that doesn&#039;t make the internet noticeably faster.

Using human-readable text protocols simplifies development and debugging, and the modest bloat in data transfer size is barely noticeable on anything but the slowest connections.

Improvements like content caching (last-modified, etags, etc.), content compression, minification, CSS sprites, CDNs, and basically everything that YSlow tells you to do, can make a huge difference in the end-user performance of web sites. Compared to those things, cutting a few dozen bytes out of the headers is a waste of time.

Consider just the issue of latency. A ping from my house in San Francisco to a server in Dallas and back takes 50ms. In that time, on a 1.5MBit DSL line I could download 7500 bytes. So changing the size of that ping packet doesn&#039;t matter much compared to trying to cut down on the number of round-trips to the server.

And when the content is much larger, the % of time spent on the header is minimal compared to the time spent on the content -- which can be compressed, provided that you add yet another header telling the HTTP client so. :)

In this paper the authors do the hard work of substituting a manually-compressed binary protocol for HTTP traffic and compare the real world results.
ftp://ftp.computer.org/MAGS/MULTIMED/mms/webEng/112272.pdf</description>
		<content:encoded><![CDATA[<p>&gt;why aren’t we making HTTP and other commonly used protocols highly optimised?</p>
<p>Because it isn&#8217;t worth it. Yes you could save a few bytes in each header, but that doesn&#8217;t make the internet noticeably faster.</p>
<p>Using human-readable text protocols simplifies development and debugging, and the modest bloat in data transfer size is barely noticeable on anything but the slowest connections.</p>
<p>Improvements like content caching (last-modified, etags, etc.), content compression, minification, CSS sprites, CDNs, and basically everything that YSlow tells you to do, can make a huge difference in the end-user performance of web sites. Compared to those things, cutting a few dozen bytes out of the headers is a waste of time.</p>
<p>Consider just the issue of latency. A ping from my house in San Francisco to a server in Dallas and back takes 50ms. In that time, on a 1.5MBit DSL line I could download 7500 bytes. So changing the size of that ping packet doesn&#8217;t matter much compared to trying to cut down on the number of round-trips to the server.</p>
<p>And when the content is much larger, the % of time spent on the header is minimal compared to the time spent on the content &#8212; which can be compressed, provided that you add yet another header telling the HTTP client so. <img src='http://infinity-infinity.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In this paper the authors do the hard work of substituting a manually-compressed binary protocol for HTTP traffic and compare the real world results.<br />
<a href="ftp://ftp.computer.org/MAGS/MULTIMED/mms/webEng/112272.pdf" rel="nofollow">ftp://ftp.computer.org/MAGS/MULTIMED/mms/webEng/112272.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://infinity-infinity.com/2009/06/making-the-internet-faster-in-5-minutes/comment-page-1/#comment-21</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Fri, 10 Jul 2009 01:57:24 +0000</pubDate>
		<guid isPermaLink="false">http://infinity-infinity.com/?p=60#comment-21</guid>
		<description>I&#039;m very interested in how many packets and how much data this would save.

The easiest way to see that would be to sniff the traffic for lets say a few days and save all the HTTP request and see how much data it is and then compress the data in your way and see compare the data.

I&#039;m very new to this programing and such stuff but I think I can manage to do it with Wireshark mabie.
Don&#039;t know how i can compress/exchange all the data thou..
If I do succeed doing it I will post my results. :)</description>
		<content:encoded><![CDATA[<p>I&#8217;m very interested in how many packets and how much data this would save.</p>
<p>The easiest way to see that would be to sniff the traffic for lets say a few days and save all the HTTP request and see how much data it is and then compress the data in your way and see compare the data.</p>
<p>I&#8217;m very new to this programing and such stuff but I think I can manage to do it with Wireshark mabie.<br />
Don&#8217;t know how i can compress/exchange all the data thou..<br />
If I do succeed doing it I will post my results. <img src='http://infinity-infinity.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->