我想编写一个需要网络数据的android应用程序。这些信息存储在一个json文件中。 json文件中的数据保存在设备上。为了保持最新,我需要检查文件每小时的变化。Android:仅在更改时才下载文件
由于远程文件可能会变得非常大,因此只有在它与以前下载的版本不同的情况下才会下载它。我想过为此使用HTTP的Last-Modified-Header。
我想出了以下工作流程(伪代码):
data = null; data_timestamp = null;
- 每小时重复:
- 问题一个HTTP头请求从
Last-Modified
头的URL和选项new_timestamp
。 - 如果任
data==null
或new_timestamp > data_timestamp
然后- 问题一个正常的HTTP请求的URL
- 保存到
data
并设置data_timestamp = new_timestamp
- 问题一个HTTP头请求从
你认为这是一个合理的进场?我只能在上次下载后使用if-modified-since
HTTP标头才能获取数据。这将为我节省一个请求。如果它发生了变化,则提供包含新数据的主体,如果没有,则主体为空。
我也考虑过使用ETags,因为如果文件有新内容(而且如果修改日期已更改,我通常要下载),但是我的webserver(nginx)不支持创建etags和出于性能原因,我不想在服务器端引入另一层。
我已经看过了ETags,但是我的webserver(ngnix)目前不支持它们。但感谢提示。 – theomega 2011-03-22 18:18:32