现在我已经将我的 Backbone 应用程序嵌入到一个 html 页面(一个经典的 index.html )中。当我编辑某些内容并返回查看页面时,要查看当前更改,我需要按 F5。
如果由于浏览器缓存页面而导致用户使用旧版本,那么最佳做法是什么?
我正在考虑使用 jsp 或 php 页面,但老实说,我在 Google 上找不到这么多。
你能帮助我吗?
现在我已经将我的 Backbone 应用程序嵌入到一个 html 页面(一个经典的 index.html )中。当我编辑某些内容并返回查看页面时,要查看当前更改,我需要按 F5。
如果由于浏览器缓存页面而导致用户使用旧版本,那么最佳做法是什么?
我正在考虑使用 jsp 或 php 页面,但老实说,我在 Google 上找不到这么多。
你能帮助我吗?
在文件更改时自动重新加载页面(查看文件夹)与确保新用户拥有正确版本的 javascript 应用程序之间存在差异。
在第一种情况下,我猜这是出于开发目的,您很可能想要使用类似的东西Live.js 之类的东西 来实现这一点。
在第二种情况下,每次返回用户进入应用程序(加载index.html
),服务器应该发出一个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);