2010-10-02 27 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似乎完成你想要的。