加快 JavaScript 的速度

最近在研究頁面速度時想到的方法,這個方法對於之後的 JS engine 應該會有幫助,另外也可以解決一個常見的鳥問題。

國外應該有人有提過這個方法,不過我用 Google 翻了一下翻不到,等之後找到再收到 delicious.com

程式碼的精神很簡單:

var a = function() { /* slow code */ };
setTimeout(a, 1);

這樣的好處是:

  • 程式可以馬上跑下去,就算 code 裡面有一些比較慢的動作 (像是透過網路抓圖片回來)。如果 JS engine 有能力使用 OS threading 就能夠避免 block I/O 造成頁面卡住。
  • 在 document 上掛 onready function 有可能會執行不到,原因是頁面中間遇到 JS error 時就不會跑 document 的 onready。但用 setTimeout 的方法就沒這個問題。(只以 IE6/IE7/Firefox3 測試過,不確定其他的瀏覽器是否支援)

抱怨一下,IE 的 JS 速度實在是不怎麼樣...

2 thoughts on “加快 JavaScript 的速度”

  1. 你搞錯重點了,我的目的是要能 multithreading,以及避免 JS error (這是我當時真正的目的),放 1ms 只是告訴瀏覽器趕快執行。

Leave a Reply

Your email address will not be published. Required fields are marked *