2011-03-22 49 views
2

我想编写一个需要网络数据的android应用程序。这些信息存储在一个json文件中。 json文件中的数据保存在设备上。为了保持最新,我需要检查文件每小时的变化。Android:仅在更改时才下载文件

由于远程文件可能会变得非常大,因此只有在它与以前下载的版本不同的情况下才会下载它。我想过为此使用HTTP的Last-Modified-Header。

我想出了以下工作流程(伪代码):

  • data = null; data_timestamp = null;
  • 每小时重复:
    • 问题一个HTTP头请求从Last-Modified头的URL和选项new_timestamp
    • 如果任data==nullnew_timestamp > data_timestamp然后
      • 问题一个正常的HTTP请求的URL
      • 保存到data并设置data_timestamp = new_timestamp

你认为这是一个合理的进场?我只能在上次下载后使用if-modified-since HTTP标头才能获取数据。这将为我节省一个请求。如果它发生了变化,则提供包含新数据的主体,如果没有,则主体为空。

我也考虑过使用ETags,因为如果文件有新内容(而且如果修改日期已更改,我通常要下载),但是我的webserver(nginx)不支持创建etags和出于性能原因,我不想在服务器端引入另一层。

回答

0

我解决了我上面描述的问题:使用if-modified-since HTTP标头下载文件。 ngnix Web服务器可以配置为返回有关此标头的正确信息。

相关问题