在「Google +1 Button Performance Review」這篇中,Aaron Peters 對 Google +1 按鈕所提供的方法感到疑惑,因為官方所提供的方法效率其實並不好。
首先先拿出官方的 sample:
<!-- Place this tag in your head or just before your close body tag -->
<script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>
<!-- Place this tag where you want the +1 button to render -->
<g:plusone></g:plusone>
即使 Google 給了建議「Place this tag in your head or just before your close body tag」,但這仍然會延遲 onload 的時間。
另外一個更糟的是,目前 Google 的伺服器會把使用者從 http://apis.google.com/js/plusone.js
導到 https://apis.google.com/js/plusone.js
,多一個重導又使得 onload 時間又更久了。接下來是噴飯的「Cache-Control: private, max-age=360
」,這使得 proxy server 無法 cache,而且因為 cache 的時間過短而經常要向 server 要資料。
再來是這個 js 沒有 minified,造成 gzip 後仍有 628bytes 的差距。然後在這個 script 裡面還可以看到特地為 Blogger「減速」使用 sync loading (喔喔)。
從以上的情況,可以看出來 Google +1 這個產品符合了不少產品成功的要件... XD
Anyway,真正的重點在文章最後面,他有引用一段 async loading 的程式碼讓大家用,雖然不能解決所有問題,但至少可以讓 onload 事件儘快觸發... (這是其中一個很大的問題)