首页 > 解决方案 > 在决定下载之前检查文件校验和

问题描述

我想实现以下逻辑:获取大文件(最大 100MB)并将其存储在 service worker 中。然后我想定期检查(比如每小时一次),如果远程文件发生变化 - 需要重新下载。否则 - 我不想打扰服务器。

我正在考虑发送类似“选项”请求的内容,只是为了获取文件的校验和。

我怎么能解决这个问题?

标签: javascriptrestservice-worker

解决方案


使用HTTP 条件请求。这是一种可以实现的方法:

  • 将服务器配置为包含一个Last-Modified响应标头,其中包含上次修改请求文件的日期,304 Not Modified如果自请求标头指示的日期以来未修改文件,则If-Modified-Since响应标头。
  • 让服务工作者保存Last-Modified标头的值,并在对文件的下一个请求中使用它。如果服务器返回 a 304 Not Modified,则表示缓存文件仍然是最新的。如果服务器返回200 OK,则缓存该文件并存储Last-Modified标头的值。

您还可以将 ETag 与If-None-Match.

这是使用 HTTP 处理缓存的标准方法。


推荐阅读