现在我已经将我的Backbone应用程序嵌入到html页面(经典的index.html)中。 当我编辑某些内容并返回查看页面时,要查看当前更改,我需要点击F5。在软件更新后刷新Backbone应用程序的方法
由于页面被浏览器缓存,用户使用旧版本的情况下,最佳做法是什么?
我正在考虑使用jsp或php页面,但我实在无法在Google上找到这么多。
你能帮我吗?
现在我已经将我的Backbone应用程序嵌入到html页面(经典的index.html)中。 当我编辑某些内容并返回查看页面时,要查看当前更改,我需要点击F5。在软件更新后刷新Backbone应用程序的方法
由于页面被浏览器缓存,用户使用旧版本的情况下,最佳做法是什么?
我正在考虑使用jsp或php页面,但我实在无法在Google上找到这么多。
你能帮我吗?
当文件发生变化时,自动重新加载页面(看文件夹)并确保新用户拥有正确的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);
我真的很喜欢你的答案。我的问题在开发过程中是“天生的”,但实际上我正在寻找第二个案例的答案。另外tnx live.js,我会尝试它! – dierre