2010-10-02 64 views
1

我正在嘗試調試在Mootools框架中編寫的JavaScript。現在我正在Rails之上開發一個Web應用程序,而我的webserver是啓動WEBrick的rails。Javascript調試困難,因爲瀏覽器不刷新腳本!

當我修改特定tree.js文件多數民衆贊成所謂的在一個mootools的初始化腳本,

require: { 
     css: [MUI.path.plugins + 'tree/css/style.css'], 
     js: [MUI.path.plugins + 'tree/scripts/tree.js'], 
     onload: function(){ 
      if (buildTree) buildTree('tree1'); 
     } 
    }, 

的更改不會加載頭被髮送到客戶端的最後修改日期:7月10日, 2010 .....這顯然不是真的,因爲我只是修改了文件。

如何擺脫這惱人的緩存。如果我直接去腳本在我的瀏覽器(Chrome),它不顯示的變化,直到我打刷新,但是當我回到我的應用程序,點擊刷新不能解決我的問題,但仍然加載預修改腳本。

回答

2

這發生在我身上也FF,我認爲它是由服務器或瀏覽器本身發出的緩存頭。 無論如何,在開發過程中避免此問題的一種簡單方法是將隨機參數添加到腳本的文件名中。

,而不是調用'tree/scripts/tree.js'使用'tree/scripts/tree.js?'+random應該無效的所有緩存。

0

由於弗里斯科說,在發展添加一個隨機數的伎倆,但你可能會發現,問題還是會影響您的生產。您希望將新的JavaScript更改推送給用戶,但不能直到瀏覽器停止緩存文件。爲了做到這一點,只需獲取文件mtime並將其添加爲隨機字符串。這隻會在文件被修改時纔會改變,所以如果JavaScript沒有被更改,它將從緩存中加載,否則將從服務器加載(如果存在)。

PHP具有功能filemtime但是由於我對Ruby不熟悉,恐怕我無法幫助您進一步朝這個方向發展(對不起!)。但是,this answer似乎完成你想要的。