Android:仅在更改后下载文件
我想写一个android应用程序,它需要来自web的数据。此信息存储在json文件中。json文件中的数据保存在设备上。为了保持最新,我需要每小时检查文件中的更改 由于远程文件可能会变得相当大,我只想在它与以前下载的版本不同的情况下下载它。我考虑使用最后一次修改的HTTP头来实现这一点 我提出了以下工作流(伪代码):Android:仅在更改后下载文件,android,http,Android,Http,我想写一个android应用程序,它需要来自web的数据。此信息存储在json文件中。json文件中的数据保存在设备上。为了保持最新,我需要每小时检查文件中的更改 由于远程文件可能会变得相当大,我只想在它与以前下载的版本不同的情况下下载它。我考虑使用最后一次修改的HTTP头来实现这一点 我提出了以下工作流(伪代码): data=null;数据\时间戳=空 每小时重复一次: 向URL和选项new\u timestampfromLast Modified头发出HTTP头请求 如果data==nu
data=null;数据\时间戳=空代码>
- 每小时重复一次:
- 向URL和选项
fromnew\u timestamp
头发出HTTP头请求Last Modified
- 如果
或data==null
则new\u timestamp>data\u timestamp
- 向URL发出普通HTTP请求
- 保存到
并设置data
data\u timestamp=new\u timestamp
- 向URL和选项
if-modified-since
HTTP头来获取自上次下载以来发生更改的数据。这将为我节省一个请求。如果已更改,则提供包含新数据的正文,如果未更改,则正文为空
我还考虑过使用etag,因为如果文件有新内容(而不是修改日期发生变化),我通常希望下载,但我的web服务器(nginx)不支持创建etag,出于性能原因,我不想在服务器端涉及另一层 您应该考虑使用而不是依赖
HTTP头
。是的
您也可以看到a来帮助解释一些概念。我解决了上面我描述的问题:使用
下载文件(如果从
HTTP头修改)。可以将ngnix
webserver配置为返回有关此头的正确信息。我已经看过etag,但我的webserver(ngnix)目前不支持开箱即用。但是谢谢你的提示。