这是第二次整理讨论的内容,本次内容有点深奥,值得细嚼慢咽。

名词解释

  • 高并发(High Concurrency)
  • 指通过设计保证系统能够同时并行处理很多请求。
  • 是互联网分布式系统架构设计中必须考虑的因素之一。
  • 高性能(High performance)
  • 目前理解就是提高浏览网页的速度。
  • 高可用(High Availability)
  • 通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
  • 高扩展性(High Extensibility)
  • 通常和可伸缩性混为一谈.在软件范畴上,是软件系统本身的属性,或者进一步说是设计的属性,代码的属性。
  • 高可维护性(High Maintainability)
  • 是衡量一个系统的可修复(恢复)性和可改进性的难易程度。

接口的高可用性

保证这个接口在任何情况下都可以正确的取到数据。

  • 方案一:每次访问的时候将a接口的数据存在本地,第二次访问的时候接口如果gg了,可以直接在本地获取数据,然后渲染出来;(前提是访问过a接口)
  • 方案二:推oss或者cdn;每次访问了一个接口,然后服务器把返回的数据生成文件推送到一个静态资源服务器上去;
  • 好处:比如某人访问了接口,静态资源服务器就会缓存a里面的数据,这时候gg了,其他人依然可以请求到oss上的数据;(逻辑是前端做到的,但是数据推到oss上是从后台推上去的)
  • oss几乎不可能gg,原因是它只是一个静态资源存储的地方;
  • 默认数据:(假数据)当接口不可用的时候,用这个自己做的数据;

目前企业的解决方案是:先走服务器接口,若是gg了;再访问本地缓存;若没有,则访问oss。

本地缓存

  • 优点:
  • 如果第一次没有访问对应的接口就没有本地缓存;
  • 数据的时效性不够;
  • 缺点:
  • 快,不用通过网络请求;

缓存地点

  • 缓存类型:
  • sessionStorage:只在当次回话有效,不会带到每一个请求里面去;
  • indexDB:浏览器支持度很低,也就是说兼容问题很大;
  • cookie:过期时间可以设置,默认是浏览器当期回话结束失效;cookie很小;每次对应域名是会在每个请求头带过去,浪费资源,所以限制了大小,如果不限制,就会跟上传文件没有区别了,会导致特别慢;对于数据接口,我们不能保证内容有多大,而且每个接口数据都要缓存,所以不能用cookie。
  • localstorage:没有大小限制;

以上都属于这两种类型:

  1. (私有)浏览器缓存:单个用户,你浏览过的页面浏览器缓存起来。
  2. (共享)代理缓存:多个用户,所在公司自己架构的,减少网络拥堵与延迟。

浏览器缓存机制

浏览器请求一个资源,是怎么判断取缓存还是找服务器下载?

浏览器缓存

状态码304是怎么产生的?

  • 是因为本地文件设置的信息头部过期了,去服务器拉取,然后服务器告诉我,其实你的文件还尚未过期,让你回自己本地取资源;

状态码200(from cache)是怎么产生的?

  • 一定是通过了请求并且成功然后返回的状态码,方式get或者post

以上的问题只是有所了解了,但是关于浏览器的缓存机制还没有系统的了解,自己在看官方文档的时候,感觉有点困惑,所以先在这里埋个种子。