客户机服务器文件更新,服务端数据更新,如何更新客户端缓存

我是服务端

被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据

对此有几点疑虑,特来请教各位大拿

客户端缓存更新是否真的有必要依赖服务端的通知?

如果增加版本号这种需求成立,难道需要每次服务端更新数据都要更新版本号?感觉并不是优雅的设计

目前处于项目初期,是否可以考虑根据具体业务数据更新频度,客户端自己设计更新策略

如果服务端数据变动通知真的是强需求,我考虑使用Last-Modified 与If-Modified-Since等Http Header的方式,是否可行

有没有其他的解决方案,还请赐教

回答:

对于这种对更新变化敏感的数据部分,数据库设计的时候可以加上create_time和update_time字段。 记录内容修改的同时更新update_time字段的值。

剩下就让客户去自己处理吧,接口无需都带上API版本号。

回答:

你想想,客户端有什么途径可以知道你服务器的数据更新了。

认为一个东西不优雅的前提是你能找到更优雅的。

这个要看你数据同步需求,如果同步的要求高的话就必须要服务器通知。

回答:

首先这里的缓存数据定义是长期不更新,少更新的数据。如省市地区,固定配置项,用户认证信息(基本不更新)。

那么我们目前项目的话是 客户端每次初始化的时候就调用一下服务端接口,传一个update_time过来,然后服务端根据这个update_time去查库判断当前数据是否更新过,如果没有更新过,则给客户端返回空,然后客户端就拿本地缓存数据。

回答:

让前端定时调用API传最后更新的时间,API中根据数据库判断最后更新的时间,非最后更新的时间就给前端返回数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# ref和out参数

向方法传递参的时候,对应的参数通常会用实参的拷贝来初始化。就是说随便在方法内部进行怎样的修改,都不会影响作为参数传递的变量的原始值。 通过上面的例子我们可以看出来,如果一个方法的参数是引用类型,那么使用哪个参数来进行任…

Gartner:如何利用数字孪生帮助企业创造价值?

❑ 导 读白皮书预测:到2021年,半数的大型工业企业将使用数字孪生,从而使这些企业的效率提高10%。到2024年,超过25%的全新数字孪生将作为新loT原生业务应用的绑定功能被采用。全文共计1723,预计阅读时间6分钟来源 | 树根…

ThinkingInJava对this关键字的介绍

this 关键字 如果有两个同类型的对象,分别叫作a 和b,那么您也许不知道如何为这两个对象同时调用一个 f()方法: class Banana { void f(int i) { /* ... */ } } Banana a new Banana(), b new Banana(); a.f(1); b.f(2); 若只有一个名叫f()的…

集成电路将成一级学科,这些高校迎来重大机遇!

来源:软科8月4日,国务院发布关于印发《新时期促进集成电路产业和软件产业高质量发展的若干政策》的通知。《新时期促进集成电路产业和软件产业高质量发展的若干政策》在人才政策这一项中提到:进一步加强高校集成电路和软件专业建设&#xff0…

震撼三观:从细胞到宇宙

这是一次高速旅行,每次都以10倍的速度跳跃。从 10的0次方开始(也就是1 米), 然后每次按照10的乘方增加。从10米, 100 米, 1000米,以此类推, 直至巨视世界的无尽。来源:通往知识之路(ID:tongwang…

关于ZipOupputStream添加压缩包常见问题

其实园子压缩解压缩的方法很多,ZipOupputStream这个类的说明很多,我这边也是从网上找的代码,但是我在压缩的时候遇到了常见的两个问题,第一个就是压缩的时候读取压缩包报该压缩包已经在另一个进程打开的bug,这个问题解…

边缘AI芯片市场将在2025年首次反超云端AI芯片市场

边缘AI将利用许多其他新兴技术,为消费者和企业领域的各种新商机铺平道路。来源:雷锋网作者:吴优由于市场对低延迟、数据隐私以及低成本和超节能的可用性的日益关注,预计到2025年,边缘AI芯片组市场将首次超过云AI芯片组…

性能指标分析

文章:架构必会的性能指标及分析策略转载于:https://www.cnblogs.com/Tpf386/p/7904174.html

倪光南:看好鸿蒙系统,坚持生态体系创新才能不被“卡脖子”

图为倪光南院士接受专访来源:澎湃新闻8月7日,在中国信息化百人会2020年峰会上,华为消费者业务CEO余承东关于“麒麟芯片将绝版”的消息一石激起千层浪,在新的国际环境下,国内科技企业应当如何突破重围,自主创…

弦理论三先驱获2020年狄拉克奖

狄拉克奖是国际理论物理中心(International Centre for Theoretical Physics,ICTP)为纪念理论物理学家狄拉克而在1985年设置的奖项,被视为理论和数学物理领域的最高荣誉之一。近日,ICTP 在意大利 Trieste 宣布了2020年…

windows c++ 内存映射大文件问题记录

MapViewOfFile()使用时总是报错1132,是因为起始位置大小要是64k的倍数。 例如:LPVOID pFileBlock MapViewOfFile(OpenMap , FILE_MAP_ALL_ACCESS // 注意,和createfile要一致 , 0 , dBegin …

CCAI 2020 | 黄铁军:“仿真主义”下的人工智能发展之路

来源:中国人工智能学会在人工智能发展的60多年中,大致有四种方法来实现某些人工智能:符号主义,联结主义,行为主义和统计学,它们分别从不同的角度抓住了“智能”的一些特点,因此各自引领着一个时…

对new int[]()的理解(转载)

new(多个对象)数组 new分配的对象,不管单个对象还是多个对象的分配,都是默认初始化。但可以对数组进行值初始化,方法就是:在大小之后添加一对空括号。 int *p1 new int[10]; // 10个未初始化int int *p2 new int[10](); // …

事件(二):事件处理程序

click,load,mouseover都是事件的名字,而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以on开头,onclick,onload 事件处理程序(html事件处理程序,dom0级事件处理程序&#xff0c…

物联网激荡MEMS传感器浪潮

来源:第三代半导体联合创新孵化中心物联网悄然而至。如今,物联网已进入跨界融合、集成创新和规模化发展新阶段,将为经济社会发展注入新活力,培育新动能。物联网在交通、物流、环保、医疗、安防、电力等领域的应用逐渐得到规模化验…

如何判断是linux/windows库,module或程序debug还是release(转)

linux: readelf -S xxx.a |grep "\.debug*" 如果有输出, 是debug, 没有是release windows: dumpbin /DEPENDENTS xx.dll, 结果输出中有MSVCRTD.dll的是debug版本. 为了脚本自动判断, 可用powergrep等工具自动分拣. .lib和我们的编译选项有…

发布功能完成。

编写要求登录的装饰器from functools import wraps def loginFirst(func): #参数是函数 wraps(func) def wrapper(*args, ** kwargs): #定义个函数将其返回 #要求登录 return func(*args, ** kwargs) return wrapper #返回一个函数 应用装饰器,要求在发布前进行登录…

git clone报错

问题:error: RPC failed; curl 18 transfer closed with outstanding read data remaining 方法:(一般http方式会用到) $ git clone 仓库地址 --depth 1 $ cd 项目目录 $ git fetch --unshallow 附带:指定分支命令 …

《自然》《科学》相继发文批评质疑:俄罗斯注册新冠疫苗“让众人面临风险”...

来源:环球科学编译丨杨心舟8月11日,俄罗斯总统普京在与政府成员举行会议时透露,俄罗斯已经注册世界第一种新冠肺炎疫苗。普京表示,这款疫苗非常有效,能够形成稳定的免疫力并且已通过所有的检查,并且自己的女…

翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

原文地址:Functional-Light-JS原文作者:Kyle Simpson-《You-Dont-Know-JS》作者关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱;分享,是 CSS 里最闪耀的一瞥…