我是服务端
被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据
对此有几点疑虑,特来请教各位大拿
客户端缓存更新是否真的有必要依赖服务端的通知?
如果增加版本号这种需求成立,难道需要每次服务端更新数据都要更新版本号?感觉并不是优雅的设计
目前处于项目初期,是否可以考虑根据具体业务数据更新频度,客户端自己设计更新策略
如果服务端数据变动通知真的是强需求,我考虑使用Last-Modified 与If-Modified-Since等Http Header的方式,是否可行
有没有其他的解决方案,还请赐教
迷茫2017-04-18 09:51:08
업데이트 변경에 민감한 이러한 종류의 데이터 부분의 경우 create_time 및 update_time 필드를 데이터베이스 설계에 추가할 수 있습니다. 내용이 수정되면 update_time 필드의 값도 동시에 업데이트됩니다.
나머지는 고객이 직접 처리하도록 하세요. 인터페이스에는 API 버전 번호가 필요하지 않습니다.
巴扎黑2017-04-18 09:51:08
생각해 보세요. 서버의 데이터가 업데이트되었음을 클라이언트가 알 수 있는 방법이 있습니까?
뭔가 우아하지 않다고 생각하기 위한 전제조건은 좀 더 우아한 것을 찾을 수 있다는 것이다.
이는 데이터 동기화 요구 사항에 따라 다릅니다. 동기화 요구 사항이 높으면 서버에서 이를 알려야 합니다.
迷茫2017-04-18 09:51:08
우선 여기서 캐시된 데이터의 정의는 오랫동안 업데이트되지 않고 거의 업데이트되지 않는 데이터입니다. 지방, 시, 지역, 고정 구성 항목, 사용자 인증 정보 등(기본적으로 업데이트되지 않음)
그런 다음 현재 프로젝트의 경우 클라이언트는 초기화될 때마다 서버 인터페이스를 호출하고 update_time을 전달한 다음 서버는 이 update_time을 기반으로 데이터베이스를 확인하여 현재 데이터가 업데이트되지 않았는지 확인합니다. 업데이트된 후 클라이언트에 null을 반환하면 클라이언트는 로컬 캐시 데이터를 가져옵니다.
阿神2017-04-18 09:51:08
프런트엔드에서 정기적으로 API를 호출하여 마지막 업데이트 시간을 전송하도록 합니다. API는 데이터베이스를 기반으로 마지막 업데이트 시간을 확인하고, 마지막 업데이트 시간이 아닌 경우 데이터를 프런트엔드로 반환합니다.