目前项目中需要使用ajax获取后端数据后展示出来,由于返回的数据量较大,考虑前端获取数据后使用LocalStorage进行浏览器本地存储数据,这样当客户再次打开页面的时候先检测本地LocalStorage中是否存在数据,如数据存在便直接从本地读取而不再发起Ajax请求后端,可以提高页面加载速度并减轻服务器带宽压力。
想法很美好,花了十几分钟也就搞好了,但是问题来了,由于LocalStorage是永久本地化存储,用户第一次打开页面的时候从后端请求到数据并存储起来,以后再次打开便不在从后端请求数据,如果后端更新了数据,如追加/删除了数据,用户就无法看到最新的数据,想了一会,准备使用类似版本号的方法来解决。
目前改造如下:第一次请求数据的时候,数据中包含个版本号(后端mysql查询的时候使用最最近一次更新数据时的UNIX时间戳来当版本号),前端获得数据的时候将版本号新建LocalStorage KEY和VALUE来保存(“ver” “1552908845”) ,当用户以后再次打开页面的时候先检测LocalStorage中是否存在ver,如存在则先请求一次后端获取最新更新的时间戳和ver储存的进行比对,如不一致则重新请求后端数据覆盖当前数据,如一致则直接使用LocalStorage中的数据
如此改造后多了一次用于获得版本号的ajax请求,只不由于只请求个版本号,数据量非常小可以忽略不记。这样算是解决了吧。
PHP API部分
前端判断请求部分
浏览器中Local Storage存储情况
本文由 www.UE4.net 原创提供 黄韬 QQ:95606117,转载请注明