gpt4 book ai didi

java - 如何有效地检查图片存储库网站是否有更改?

转载 作者:行者123 更新时间:2023-12-01 20:21:04 25 4
gpt4 key购买 nike

我目前正在开发一项同步服务,该服务可以从交换服务器获取所有用户个人资料图片。为了跟踪更改,我决定对响应正文进行 MD5 编码,并将其与数据库中的实体一起保存,以便进一步比较它并查看图片是否已更改。而实际图片本身保存在磁盘上。

图片大小为 504x504 像素,因此重量约为 27 kb。而且由于我正在获取字节码的哈希值,即使图片匹配,我仍然必须下载 27kb 数组,这导致几乎没有速度提升(除了我不必在磁盘上替换它这一事实)。乘以大量用户,即使所有图片都匹配,这项工作也需要 20 分钟。

有没有办法优化同步,这样如果图片相同,我就不会下载响应正文?以下是一些代码,可以帮助您更好地理解:

entity = restTemplate.getForEntity(
Constant.EXCHANGE_URL_PREFIX + emailAddress + Constant.EXCHANGE_URL_SUFFIX, byte[].class);

这就是我调用 get 请求的方式。

if (entity.hasBody()) {
String hexHash = Hex.encodeHexString(MessageDigest.getInstance("MD5").digest(bytes));
if (!listofHashes.contains(hexHash)) {
picture.remove();
} else picture.save();
}

总结一下:有没有一种方法可以使用restTemplate检测网页更改,而无需下载整个页面?预先感谢您。

编辑:对 ETag header 以及 @Cacheable 注释的其他研究并未成功。

最佳答案

这实际上取决于您正在通信的服务器的功能。如果该服务器不支持 standard mechanisms 中的任何一个( ETagIf-Modified-Since 等,如评论中所述)或发送任何其他自定义 header ,那么您别无选择,只能执行您所描述的操作 - 计算客户端(在您的应用程序中)响应正文的摘要.

关于java - 如何有效地检查图片存储库网站是否有更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44672116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com