requirejs clear cache

當每次需要把code佈署至production,又希望user不要因為瀏覽器的機制讀取到舊的code,那麼最簡單方式,就是改變靜態檔案的連結,只要連結不同,瀏覽器就會視為不同檔案。

第一種方法就是讓每次佈署到production時,先替換靜態檔案的連結,如果使用ruby on rails,它能直接將靜態檔案去做merge,和將連結轉成亂碼,可以參考icook頁面上的source code。

另一種方式就是直接將js、css這些靜態檔案,直接經由頁面上吐出來,這種方式request的數量會大幅減低,讀取速度也會更快,例如yahoogoogle

那如果是使用requirejs,又不想使用以上方法或者自行在每個script加參數,那麼可以使用以下方式:

var require = {
    urlArgs: "bust=v1"
};

官方有建議使用var的方式宣告require,而不要使用window.require方式,因為在老舊的IE瀏覽器,會有可能會出問題。

(相信之前有測過IE6和常常使用共用同一個namespace,並且有寫得很嚴謹的人,應該都有碰過這奇怪bug。)