在软件更新后刷新Backbone应用程序的方法

时间:2013-07-27 11:43:07

标签: backbone.js

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

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

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

你能帮助我吗?

1 个答案:

答案 0 :(得分: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);