2013-07-27 32 views
1

现在我已经将我的Backbone应用程序嵌入到html页面(经典的index.html)中。 当我编辑某些内容并返回查看页面时,要查看当前更改,我需要点击F5。在软件更新后刷新Backbone应用程序的方法

由于页面被浏览器缓存,用户使用旧版本的情况下,最佳做法是什么?

我正在考虑使用jsp或php页面,但我实在无法在Google上找到这么多。

你能帮我吗?

回答

1

当文件发生变化时,自动重新加载页面(看文件夹)并确保新用户拥有正确的JavaScript应用程序版本。

在第一种情况下,我猜这是出于开发目的,你很可能会想用Live.js这样的东西来达到这个目的。

在第二种情况下,每次返回用户进入应用程序(加载index.html),服务器应该发出的JavaScript文件304 - Not changed如果应用程序没有改变,该文件在浏览器或200 - OK缓存如果文件已更改并提供新版本,则使用该文件。这与Backbone无关,缓存策略在服务器端实现。

但是,如果您希望应用程序在用户使用时定期检查新版本,并在有变更时重新加载(我个人认为这是一个坏主意,但有可能),这里有一个解决方案这将工作。

您需要在服务器端拥有一个仅返回应用程序版本的入口点。这可能是语义版本控制,哈希,名称等等。只要每个版本都不同。

main.js 

var currentVersion; 

// Assuming that the '/api/app-version' access point returns a string or number. 
$.ajax({ url : '/api/app-version'}) 
.done(function(data) { currentVersion = data }); 

// Poll the server every minute to watch for a new version. 
// If the version is different, reload the application. 
setInterval(function() { 
    $.ajax({ url : '/api/app-version'}) 
    .done(function(data) { if (data !== currentVersion) window.location.reload() }); 
}, 60000); 
+0

我真的很喜欢你的答案。我的问题在开发过程中是“天生的”,但实际上我正在寻找第二个案例的答案。另外tnx live.js,我会尝试它! – dierre

相关问题