现在我已将我的Backbone应用程序嵌入到html页面(经典的index.html)中。 当我编辑某些内容并返回查看页面时,要查看当前的更改,我需要点击F5。
在用户使用旧版本的情况下,由于浏览器缓存了该页面,最佳做法是什么?
我正在考虑使用jsp或php页面,但老实说,我无法在Google上找到这么多。
你能帮助我吗?
答案 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);