别的公司每天不定时的会给我们数据,我们有一个定时系统检测文件数据是否更新,如果更新就下载。但有一个公司给我们的是 http 的文件下载链接,不知道如何在线上检测是否更新。之前的做法是下载下来和之前的作比较,有什么方法在下载钱就得知文件信息么? ps:刚刚实习,好多不懂的地方,请指教。
1
TimePPT 2018-02-08 09:29:37 +08:00 via iPhone
让对方在下载链接带一个哈希值参数
|
2
sunnyadam 2018-02-08 09:37:12 +08:00
顶楼上,带哈希值,如果下载链接每次都变可以比对链接地址,或者和对方商量一下,他们那边更新后通过接口给你一个消息,你方接受到消息则认为文件更新,然后进行下载;等等的,方法很多的
|
3
CEBBCAT 2018-02-08 09:38:40 +08:00 via Android
head 可以拿到文件大小,可以做简单的判断
|
4
awenforlinux 2018-02-08 09:39:44 +08:00 1
last-modified
|
5
fiht 2018-02-08 09:40:59 +08:00 2
etag
|
6
sr0miao OP @awenforlinux 阁下正解,十分感谢
|
7
scriptB0y 2018-02-08 10:06:25 +08:00 1
@fiht etag+1 https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-cn#etag
不过也需要服务器端正确实现才可以,如果没实现,还是让他们在链接加一个 hash 参数简单 |
10
qsnow6 2018-02-08 10:31:23 +08:00 1
last-modified、etag、Content-Length
都可以,简单、高效 |
11
qsnow6 2018-02-08 10:41:50 +08:00 1
最低成本的是使用 If-Modified-Since,给 If-Modified-Since 设置一个时间,源服务器会比对时间,当资源的更新时间大于 If-Modified-Since 的值时,返回 200 状态码,否则就是 304。
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/If-Modified-Since |
12
vimiix 2018-02-08 12:27:00 +08:00
让对方每次更新都提供文件的 MD5 值,判断值是否相同
|
13
pabupa 2018-02-08 14:13:32 +08:00
最后修改时间呀~
|
14
laodao1990 2018-02-08 15:02:52 +08:00
第一次听说 etag,学习了。感谢!
|
15
Xieldy 2018-02-09 00:06:55 +08:00
学到了学到了
|