读书笔记 每日一记:1
Memcached
缓存服务,可以用于存储session; 阿里云系列产品里面有
session
概述:
是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
session 是如何工作的?
- 每个 session 都对应一个 session_id,通过 session_id 可以查询到对应的 session
- session_id 通常是存放在客户端的 cookie 中,服务端存好 session 之后将对应的 session_id 设置在 cookie 中发送给客户端
- 当请求到来时,服务端检查 cookie 中保存的 session_id 并通过这个 session_id 与服务器端的 session 关联起来,进行数据的保存和修改
session 的储存有四个常用选项:内存、 cookie、缓存、数据库
- 内存:开发环境存内存比较方便,问题是不能够共享状态(只能在本机访问)
- cookie:使用 cookie 来储存 session 的话,session 保存在用户浏览器端,每次用户访问时,都会主动带上他自己的信息。安全性的话,只要遵照最佳实践来,也是有保证的。它的弊端是增大了数据量传输,好处是比较方便
- 缓存:可以共享(Memcached)
- 数据库:可以共享
cookie
概述:
是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
什么是 Cookie
- Cookie 就是浏览器储存在用户电脑上的一小段文本文件
- Cookie 是纯文本格式,不包含任何可执行的代码
- Cookie 由键值对构成,由分号和空格隔开
- Cookie 虽然是存储在浏览器,但是通常由服务器端进行设置
- Cookie 的大小限制在 4kb 左右
Cookie 是如何工作的:
- 首先,我们假设当前域名下还是没有 Cookie 的
- 接下来,浏览器发送了一个请求给服务器(这个请求是还没带上 Cookie 的)
- 服务器设置 Cookie 并发送给浏览器(当然也可以不设置)
- 浏览器将 Cookie 保存下来
- 接下来,以后的每一次请求,都会带上这些 Cookie,发送给服务器
浏览器设置cookie


参数配置
app.use(async(ctx, next) => {
ctx.cookies.set(
'cid',//key
'hello world', //value
{
domain: 'localhost', // 写cookie所在的域名
path: '/index', // 写cookie所在的路径
maxAge: 10 * 60 * 1000, // cookie有效时长
expires: new Date('2017-02-15'), // cookie失效时间 有maxAge的时候 它是无效的
httpOnly: false, // 是否只用于http请求中获取(如果为true,客户端不能修改)
overwrite: false // 是否允许重写
}
)
})