<?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: How Google is wasting your bandwidth</title> <atom:link href="http://nichol.as/how-google-is-wasting-your-bandwidth/feed" rel="self" type="application/rss+xml" /><link>http://nichol.as/how-google-is-wasting-your-bandwidth</link> <description></description> <lastBuildDate>Thu, 09 Sep 2010 13:50:01 +0200</lastBuildDate> <generator>http://wordpress.org/?v=2.9.2</generator> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>By: Google jQuery CDN</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-1043</link> <dc:creator>Google jQuery CDN</dc:creator> <pubDate>Fri, 19 Mar 2010 11:23:23 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-1043</guid> <description>[...] specific version (http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js) is undesirable; Google will expire the &#8220;latest&#8221; content after one hour, as opposed to one year for a specific version. This is for good reason of course, as the latest [...]</description> <content:encoded><![CDATA[<p>[...] specific version (<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" rel="nofollow">http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js</a>) is undesirable; Google will expire the &#8220;latest&#8221; content after one hour, as opposed to one year for a specific version. This is for good reason of course, as the latest [...]</p> ]]></content:encoded> </item> <item><title>By: Nicholas Piël</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-20</link> <dc:creator>Nicholas Piël</dc:creator> <pubDate>Tue, 01 Dec 2009 10:45:13 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-20</guid> <description>Hi Brett,Thanks for your comment. I did some testing in Safari and it revalidates the cache *before* it goes stale. However, after some more testing it seems that Safari is kinda special in this. Opera and Firefox do not show this behavior.I should also note that Safari revalidates in an asynchronous way, it first shows you the cache and then puts the validity check on some sort of queue. Closing the browser before it fires the conditional-get  does not clear this queue so it seems, as reopening simply fires a &#039;if modified since&#039; request.From reading the specification:&lt;blockquote&gt;
When the must-revalidate directive is present in a response received by a cache, that cache MUST NOT use the entry after it becomes stale to respond to a subsequent request without first revalidating it with the origin server.
&lt;/blockquote&gt;It seems to only say how to handle the &#039;must-revalidate&#039; directive  AFTER the cache goes stale. And when interpreting the next part:&lt;blockquote&gt;
Servers should send the must-revalidate directive if and only if failure to revalidate a request on the entity could result in incorrect operation, such as a silently unexecuted financial transaction. Recipients MUST NOT take any automated action that violates this directive, and MUST NOT automatically provide an unvalidated copy of the entity if revalidation fails.
&lt;/blockquote&gt;One could say that the &lt;a href=&quot;http://code.google.com/apis/ajaxlibs/documentation/#googleDotLoadVersioning&quot; rel=&quot;nofollow&quot;&gt;gist of providing a 1.3 version by the CDN&lt;/a&gt; is this: &quot;always make sure the client has the latest (bug free / patched) version of  the library&quot;. If that is the case, then the cache control setting  &#039;must-revalidate&#039; is indeed correct but setting a cache expiry time of one hour isn&#039;t imho.ps,
You&#039;re right that when the cache expires, the browsers do not automatically purge the item from their cache. At least not in the 1 hour interval i have tested. I have modified my post accordingly, thanks!</description> <content:encoded><![CDATA[<p>Hi Brett,</p><p>Thanks for your comment. I did some testing in Safari and it revalidates the cache *before* it goes stale. However, after some more testing it seems that Safari is kinda special in this. Opera and Firefox do not show this behavior.</p><p>I should also note that Safari revalidates in an asynchronous way, it first shows you the cache and then puts the validity check on some sort of queue. Closing the browser before it fires the conditional-get  does not clear this queue so it seems, as reopening simply fires a &#8216;if modified since&#8217; request.</p><p>From reading the specification:</p><blockquote><p> When the must-revalidate directive is present in a response received by a cache, that cache MUST NOT use the entry after it becomes stale to respond to a subsequent request without first revalidating it with the origin server.</p></blockquote><p>It seems to only say how to handle the &#8216;must-revalidate&#8217; directive  AFTER the cache goes stale. And when interpreting the next part:</p><blockquote><p> Servers should send the must-revalidate directive if and only if failure to revalidate a request on the entity could result in incorrect operation, such as a silently unexecuted financial transaction. Recipients MUST NOT take any automated action that violates this directive, and MUST NOT automatically provide an unvalidated copy of the entity if revalidation fails.</p></blockquote><p>One could say that the <a href="http://code.google.com/apis/ajaxlibs/documentation/#googleDotLoadVersioning" rel="nofollow">gist of providing a 1.3 version by the CDN</a> is this: &#8220;always make sure the client has the latest (bug free / patched) version of  the library&#8221;. If that is the case, then the cache control setting  &#8216;must-revalidate&#8217; is indeed correct but setting a cache expiry time of one hour isn&#8217;t imho.</p><p>ps,<br /> You&#8217;re right that when the cache expires, the browsers do not automatically purge the item from their cache. At least not in the 1 hour interval i have tested. I have modified my post accordingly, thanks!</p> ]]></content:encoded> </item> <item><title>By: Brett Bavar</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-17</link> <dc:creator>Brett Bavar</dc:creator> <pubDate>Tue, 01 Dec 2009 02:22:58 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-17</guid> <description>I think you have misunderstood the way HTTP cache revalidation works. There are two important points to clarify:
1. Cache revalidation only happens *after* a cache entry goes stale.
2. Cache revalidation prevents re-downloading the entire content if it has not been modified.So, what really happens when you use jquery version 1.3 from Google? The cached version will be used for 1 hour without revalidation, then the content will be revalidated once every hour to make sure it hasn&#039;t changed. If the content hasn&#039;t changed, the revalidation request will be a lightweight 304 (Not Modified) response, thus avoiding an unnecessary 60k download.Let me know if I&#039;m misunderstanding something myself. See http://www.freesoft.org/CIE/RFC/2068/168.htm for details....On the other hand, the &quot;time travel&quot; issue for libraries with URL parameters is a completely separate issue. It seems that caching is disabled for requests with URL parameters. Maybe that&#039;s a bug.</description> <content:encoded><![CDATA[<p>I think you have misunderstood the way HTTP cache revalidation works. There are two important points to clarify:<br /> 1. Cache revalidation only happens *after* a cache entry goes stale.<br /> 2. Cache revalidation prevents re-downloading the entire content if it has not been modified.</p><p>So, what really happens when you use jquery version 1.3 from Google? The cached version will be used for 1 hour without revalidation, then the content will be revalidated once every hour to make sure it hasn&#8217;t changed. If the content hasn&#8217;t changed, the revalidation request will be a lightweight 304 (Not Modified) response, thus avoiding an unnecessary 60k download.</p><p>Let me know if I&#8217;m misunderstanding something myself. See <a href="http://www.freesoft.org/CIE/RFC/2068/168.htm" rel="nofollow">http://www.freesoft.org/CIE/RFC/2068/168.htm</a> for details.</p><p>&#8230;On the other hand, the &#8220;time travel&#8221; issue for libraries with URL parameters is a completely separate issue. It seems that caching is disabled for requests with URL parameters. Maybe that&#8217;s a bug.</p> ]]></content:encoded> </item> <item><title>By: 使用 Google 提供的 AJAX Libraries 需要注意的細節&#8230; at Gea-Suan Lin&#8217;s BLOG</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-16</link> <dc:creator>使用 Google 提供的 AJAX Libraries 需要注意的細節&#8230; at Gea-Suan Lin&#8217;s BLOG</dc:creator> <pubDate>Mon, 30 Nov 2009 22:13:46 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-16</guid> <description>[...] 在「How Google is wasting your bandwidth」看到有人發現 Google 所提供的 Google AJAX Libraries 有一些地方處理的非常極端，沒有注意的話反而會使得使用者多花不少頻寬在上面。 [...]</description> <content:encoded><![CDATA[<p>[...] 在「How Google is wasting your bandwidth」看到有人發現 Google 所提供的 Google AJAX Libraries 有一些地方處理的非常極端，沒有注意的話反而會使得使用者多花不少頻寬在上面。 [...]</p> ]]></content:encoded> </item> <item><title>By: Nicholas Piël</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-14</link> <dc:creator>Nicholas Piël</dc:creator> <pubDate>Mon, 30 Nov 2009 20:21:09 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-14</guid> <description>Google also sets:&lt;blockquote&gt;
Cache-Control:public, must-revalidate, proxy-revalidate, max-age=3600
&lt;/blockquote&gt;So, if the version changes the client will download the new version independent of the expires header.</description> <content:encoded><![CDATA[<p>Google also sets:</p><blockquote><p> Cache-Control:public, must-revalidate, proxy-revalidate, max-age=3600</p></blockquote><p>So, if the version changes the client will download the new version independent of the expires header.</p> ]]></content:encoded> </item> <item><title>By: bluszcz</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-13</link> <dc:creator>bluszcz</dc:creator> <pubDate>Mon, 30 Nov 2009 20:14:55 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-13</guid> <description>I don&#039;t see the point.jQuery 1.3 is linked to last version. Setting the expiration time for one hour is complete understable - maybe new version will be released in next hour?However, your final note is correct.</description> <content:encoded><![CDATA[<p>I don&#8217;t see the point.</p><p>jQuery 1.3 is linked to last version. Setting the expiration time for one hour is complete understable &#8211; maybe new version will be released in next hour?</p><p>However, your final note is correct.</p> ]]></content:encoded> </item> <item><title>By: Veera</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-12</link> <dc:creator>Veera</dc:creator> <pubDate>Mon, 30 Nov 2009 18:12:23 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-12</guid> <description>Good catch.I&#039;ve never used a CDN before, because I&#039;m kinda scared to download a JS file from a third party servers. I tried to avoid this as much as possible. And your post gave me one more reason for me to avoid CDN! :-)</description> <content:encoded><![CDATA[<p>Good catch.</p><p>I&#8217;ve never used a CDN before, because I&#8217;m kinda scared to download a JS file from a third party servers. I tried to avoid this as much as possible. And your post gave me one more reason for me to avoid CDN! <img src='http://nichol.as/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>By: Nicholas Piël</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-11</link> <dc:creator>Nicholas Piël</dc:creator> <pubDate>Mon, 30 Nov 2009 17:15:26 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-11</guid> <description>@Michael,Page load is getting more and more important. People do not accept to wait, page load time already influences your bounce and conversion rates and might soon even influence your search ranking.But yes, it is wrong to talk about bandwidth in the title, but then again the complete title is somewhat exaggerated. As it is not really Google who is screwing up your latency it is the misuse of their CDN which is at the heart of the problem.</description> <content:encoded><![CDATA[<p>@Michael,</p><p>Page load is getting more and more important. People do not accept to wait, page load time already influences your bounce and conversion rates and might soon even influence your search ranking.</p><p>But yes, it is wrong to talk about bandwidth in the title, but then again the complete title is somewhat exaggerated. As it is not really Google who is screwing up your latency it is the misuse of their CDN which is at the heart of the problem.</p> ]]></content:encoded> </item> <item><title>By: Michael Wales</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-10</link> <dc:creator>Michael Wales</dc:creator> <pubDate>Mon, 30 Nov 2009 16:58:33 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-10</guid> <description>I can understand the implication on the users (sites takes longer to load) but does anyone really have to worry about bandwidth anymore?</description> <content:encoded><![CDATA[<p>I can understand the implication on the users (sites takes longer to load) but does anyone really have to worry about bandwidth anymore?</p> ]]></content:encoded> </item> <item><title>By: screenshotscores</title><link>http://nichol.as/how-google-is-wasting-your-bandwidth/comment-page-1#comment-8</link> <dc:creator>screenshotscores</dc:creator> <pubDate>Mon, 30 Nov 2009 16:30:07 +0000</pubDate> <guid isPermaLink="false">http://nichol.as/?p=112#comment-8</guid> <description>Very interesting findings. Personally not that fond of CDN, usually more headache then pleasure imho!</description> <content:encoded><![CDATA[<p>Very interesting findings. Personally not that fond of CDN, usually more headache then pleasure imho!</p> ]]></content:encoded> </item> </channel> </rss>