开发者学堂课程【Redis 入门实战演练: 缓存基础(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/653/detail/10831
缓存基础(二)
1)发动请求获取资源的最后修改时间。
2)服务器返回资源的最后修改时间
3)304为最后修改时间没有发生变化,没有发生变化的话,他就会使用浏览器本地缓存过的数据。
4)如果是200的内容发生变化,服务端就会重新反馈。
②Etag 标记:
基于 Etag 标记是否一致做判断页面是否发生过变化,比如基于 Nginx 的 etag on 来实现。
③过期时间
以上两种都需要发送请求,即不管资源是否过期都要发送请求进行协商,这样会消耗不必要的时间,因此有了缓存的过期时间,即第一次请求资源的时候带一个资源的过期时间,默认为30天,当前这种方式使用的比表较多,但是无法保证客户的时间都是准确并且一致的,因此会加入一个最大生存周期,使用用户本地的时间计算缓存数据是否超过多少天,下面的过期时间为2027年,但是缓存的最大生存周期计算为天等于3650天即10年,过期时间如下:
缓存最大生存周期单位为秒,根据用户的当时时间计算往后推算是否超时
如果时间正确,则超时时间以此为准
2. CDN 缓存
(1)什么是 CDN
内容分发网络(Content Delivery Network),通过将服务内容分发至全网加速节点,利用全球调度系统使用户能够就近获取,有效降低访问延迟,提升服务可用性,CDN 第一降低机房的使用带宽,因为很多资源通过 CDN 就直接返回用户了,第二解决不同运营商之间的互联,因为可以让联通的网络访问联通让电信的网络访问电信,起到加速用户访问的目的,第三:解决用户访问的地域问题,就近返回用户资源。
国内:
百度CDN:
https://cloud.baidu.com/product/cdn.html
阿里CDN:
https://www.aliyun.com/product/cdn?spm=5176.8269123.416540.50.728y8n
腾讯CDN:
https://www.qcloud.com/product/cdn
功能包括图片识别、图片过滤,留言、评论、微博内容等检测其是否有违法内容如鉴黄等
国外:
ASW 全球加速,因为所作业务面向全球所以供北美、南非、欧洲等全球各地的用户访问,全球加速可以使运行速度加快
(2)用户请求 CDN 流程
提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,另外 CDN 可以将数据根据访问的热度不同而进行不同级别的缓存,例如访问最最高的资源访问 CDN 边缘节点的内存,其次的放在 SSD 或者 SATA,再其次的放在云存储,这样兼顾了速度与成本。
(3)CDN 主要优势:
(4)提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,另外 CDN 可以将数据根据访问的热度不同而进行不同级别的缓存,例如访问量最高的资源访问 CDN 边缘节点的内存,其次的放在 SSD 或者 SATA,再其次的放在云存储,这样兼顾了速度与成本。缓存-缓存到最快的地方如内存,缓存的数据准确命中率高,访问速度就快。
(5)调度准确-将用户调度到最近的边综节点
(6)性能优化-CDN 专门用于缓存响应速度快
(7)安全相关-抵御攻击
(8)节省带宽:由于用户请求由边缘节点响应,因此大幅降低到源站带宽。
3. 应用层缓存:
4. Nginx. PHP 等 web 服务可以设置应用缓存以加速响应用户请求,另外有些解释性语言比如 PHP/Python/]ava 不能直接运行,需要先编译成字节码,但字节码需要解释器解释为机器码之后才能执行,因此字节码也是一种缓存,有时候会出现程序代码上线后字节码没有更新的现象。
5. 维护时一定要先暂停服务将 temp、work 的缓存目录进行删除,删除之后再重新部署代码,再次运行时会在相应目录下加载生成出新的字节码文件。不进行删除在重新启动时会导致目录下的文件代码没有被替换,会导致某些功能不能生效。
6. 5.其他层面缓存:
7. (1)CPU 缓存:
8. CPU 缓存(L1的数据缓存和L1的指令缓存),二级缓存、三级缓存
(2)cookie 与 session:
(3)Cookie 是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤比如加密后的账户名密码等信息
(4)Cookies 是服务器在客户端浏览器上存储的小段文本并随每一个请求发送至同一个服务器,是一种实现客户端保持状态的方案。
(5)session 称为会话信息,位于 web 服务器上,主要负责访问者与网站之间的交互,当浏览器请求 http 地址时,可以基于之前的 session 实现会话保持、session 共享等。
(6)session 与 cookie 的区别:
(7)Cookie 以文本文件格式存储在浏览器中,而 session 存储在服务端。
(8)cookie 的存储限制了数据量,只允许4KB,而 session 是无限制的。
(9)cookie 包含在每一个客户端请求报文中,因此容易被人捕获。
(10)cookie 和 session 都可以设置过期时间。
二:redis 部署与使用:
1.redis 基础:
官网地址:https://redis.iol
Redis 和 Memcached 是非关系型数据库也称为 NoSQL 数据库,MySQL、Mariadb、SQL Server、PostgreSQL、Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)
(1)redis 简介:
Redis(Remote Dictionary Server)在2009年发布,开发者 Salvatore Sanfilippo 是意大利开发者,他本想为自己的公司开发一个用于替换 MySQL 的产品 Redis,但是没有想到他把 Redis 开源后大受欢迎,短短几年,Redis 就有了很大的用户群体,目前国内外使用的公司有知乎网、新浪微博、GitHub 等
redis 是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的还有 memcache,但相比 memcache,redis还提供了易扩展、高性能、具备数据持久性等功能。
Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛,目前 redis 在 DB-Engine 月排行榜 https://db.engines.com/en/ranking中一直比较靠前,而且一直是键值型存储类的首位。