请教下三端分离用户状态和缓存的时效性问题,谢谢?

来源:1-4 扩展课程:<三端分离>

sxfenglei

2017-05-04

老师请教几个工作中遇到的问题:

1、用户状态:以前在做项目的时候就是AJAX请求url地址 用户状态保持在session中,关闭浏览器用户就退出了哪用token怎么确保关闭浏览器退出或者如何检查用户状态离线还是在线。现在三端分离了这个用户状态如何保存,具体的token怎么在移动端和web端进行应用?

2、token在服务端和web、移动端的具体实现:在首次请求的时候生成一个token字符串(如何生成才够安全),返回给客户端保存 web端存储在cookie或者h5存储中那这样不是可以通过浏览器工具(或者http拦截)查看到 然后伪造请求?

3、 api接口数据缓存怎么确保数据的时效性:三端分离后如何对接口数据进行缓存 网上有很多说 redis和memcached等可以如何保证缓存的时效性 例如文章列表 不确定用户啥时候添加新文章啥时候更新啥时候删除 例如我现在去了新闻文章列表后缓存1day 可能1小时就有人更新了 这个是需要写监听事件吗 没秒钟检测一次数据的更新 这样是不是有很多定时监听事件在频繁读取数据库?


写回答

1回答

7七月

2017-05-04

你问的这些问题很好,这就是我想说的网站的开发方式已经不适合现代的Web了。

第一个问题:令牌保存在客户端缓存中,每次访问的时候携带令牌,具体流程后面会用小程序来完整呈现。

第二:任何的信息都有可能被拦截,令牌本身无法解决它丢失的问题,任何一个技术也解决不了这个问题。只能尽量缩短令牌的有效期来减少风险。同样,应该使用HTTPS来加密数据传输。在h5存储中会被看到Token是很正常的,即使不能看到,你开着PC,别人是不是也能直接来操作你的PC?这个问题无法回避。

第三:第三个问题是一个高性能的问题。使用redis也好mem也好通常来说策略有两种:第一:有一个全局的定时器,比如linux下的crontab,定期的更新全部数据;第二:实时更新,当你在CMS里更新了数据后,实时的写入缓存。第一种方法简单,但时效性不高;第二种方法复杂,不好维护,但实时性好。

2
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4826 学习 · 4382 问题

查看课程