跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • android/Kotlin: 手机 MP3 文件和服务器 MP3 文件同步方案
未分類
1 11 月 2020

android/Kotlin: 手机 MP3 文件和服务器 MP3 文件同步方案

android/Kotlin: 手机 MP3 文件和服务器 MP3 文件同步方案

資深大佬 : sprinter 2

APP 从服务器下载 1 千个超短音频 MP3 文件做为离线播放用, 这些文件被 APP 储存在 SD 卡下的制定文件夹内. 现在需要这 1 千个 MP3 随时和服务器的源文件同步(文件名不变但是 MP3 内容会变化).

我现在让服务器每天生成源文件的 MD5 清单, 然后每天 APP 下载最新 MD5 清单后, 让一千个文件逐一和清单比对最新的 MD5 值. 如果 MD5 不一致则重新下载这个 MP3 文件.

现在问题是我发现 MD5 每天计算 1 千次太耗时间和资源, 请问有啥简单高效的方法确保上述手机内的 1 千个文件和服务器源文件同步? 谢谢

大佬有話說 (12)

  • 資深大佬 : xuxuxu123

    从更新时间入手?
    本地文件有个变更时间,服务器最新文件也有个变更时间,然后判断时间差,超过范围就更新

    不知道行不行,只是个提议

  • 資深大佬 : hongch

    为什么后端不直接给一个接口,告诉你哪几个文件需要更新,然后直接更新这几个文件就可以了,耗时的无脑操作丢给后端去做

  • 資深大佬 : JDog

    不用每次都计算文件 MD5 值吧~
    可以把文件 id 和 MD5 值存在文件里做为元数据。

  • 資深大佬 : yaocai321

    只需要知道哪些更新了呀 为什么要全量对比?

  • 資深大佬 : lijialong1313

    @JDog 因为文件会变,所以需要每次都计算(只是不用全部计算)

    可以结合 2 个,一个是数据库存个 id 和 md5,然后把 md5 整批丢到后端,后端比较后,返回需要下载的文件地址,然后前端再下载就行。这样应该比较省一点

  • 資深大佬 : janus77

    如果你只需要服务端向手机同步,不需要手机向服务端同步的话(也就是手机端没有主动更新,只是被动接受更新)
    那就直接用版本更新的方案来做嘛

  • 主 資深大佬 : sprinter

    @janus77 对, 大哥 手机是被动更新, 请问”版本更新的方案”是指什么样的方案, 网上有类似现成的吗? 谢谢

  • 資深大佬 : ritaswc

    如果让我做。我就会修改 url 上面的文件名,然后用一个映射表来做
    比如
    01.mp3 http://xxx.com/213aced123e1.mp3
    02.mp3 http://xxx.com/213a32131231.mp3
    这么写下去,每次修改 url 不就好了,省得再计算 md5

  • 資深大佬 : ritaswc

    这样做也方便你上 cdn 呀,cdn 同名文件更新内容很麻烦的哦

  • 資深大佬 : acidsweet

    Git Diff 的思路吧,如果你本地不会去修改文件数量和内容,那 client–[commit_id]–>server 后服务端计算两者 diff,下发这部分文件让 client 覆盖就行;但是如果本地会修改的话,如果允许冗余,引入工作去和本地仓库的概念,先 git rest 工作区然后再 git pull ;如果不允许冗余,那比较麻烦了,可以先本地检查文件是不是被修改过,哪些被修改过然后将 commit_id 和这部分信息都给服务端由服务端决策需要更新的部分

  • 資深大佬 : Arthur5

    这一批文件有一个版本号,任何文件改动一次版本号加 1,版本之间有差异的文件记录下来。手机每次只比较本地版本号与服务器版本号,版本号不同就把有差异文件下回来覆盖就行了

  • 資深大佬 : flynaj

    简单的比较一下文件时间大小就行。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具