Maison > Questions et réponses > le corps du texte
我是服务端
被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据
对此有几点疑虑,特来请教各位大拿
客户端缓存更新是否真的有必要依赖服务端的通知?
如果增加版本号这种需求成立,难道需要每次服务端更新数据都要更新版本号?感觉并不是优雅的设计
目前处于项目初期,是否可以考虑根据具体业务数据更新频度,客户端自己设计更新策略
如果服务端数据变动通知真的是强需求,我考虑使用Last-Modified 与If-Modified-Since等Http Header的方式,是否可行
有没有其他的解决方案,还请赐教
迷茫2017-04-18 09:51:08
Pour ce type de partie de données sensible aux modifications de mise à jour, les champs create_time et update_time peuvent être ajoutés à la conception de la base de données. Lorsque le contenu est modifié, la valeur du champ update_time est mise à jour en même temps.
Laissez les clients gérer le reste eux-mêmes. L'interface n'a pas besoin de porter un numéro de version d'API.
巴扎黑2017-04-18 09:51:08
Pensez-y, existe-t-il un moyen pour le client de savoir que les données de votre serveur ont été mises à jour.
La condition préalable pour penser que quelque chose n'est pas élégant est que l'on puisse trouver quelque chose de plus élégant.
Cela dépend de vos exigences de synchronisation des données. Si les exigences de synchronisation sont élevées, le serveur doit vous en informer.
迷茫2017-04-18 09:51:08
Tout d'abord, la définition des données mises en cache ici est celle qui n'est pas mise à jour depuis longtemps et qui est rarement mise à jour. Tels que les provinces, les villes et les régions, les éléments de configuration fixes, les informations d'authentification des utilisateurs (fondamentalement non mises à jour).
Ensuite, pour notre projet actuel, le client appelle l'interface du serveur à chaque initialisation, passe un update_time, puis le serveur vérifie la base de données en fonction de ce update_time pour déterminer si les données actuelles ont été mises à jour. a été mis à jour, puis renvoie null au client, puis le client obtient les données mises en cache locales.
阿神2017-04-18 09:51:08
Laissez le front-end appeler régulièrement l'API pour transmettre l'heure de la dernière mise à jour. L'API détermine l'heure de la dernière mise à jour en fonction de la base de données et renvoie les données au front-end si ce n'est pas la dernière heure mise à jour