一些术语

image.png

HTTP概况

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
image.png
image.png
image.png

HTTP连接

image.png

HTTP非持久连接

每次从接收一个Web对象之后,TCP连接都会关闭,下次请求又会重新请求TCP连接
image.png
image.png

响应时间模型

image.png

HTTP持久连接

非流水线方式:
一次请求一个对象,等这次请求结束后再请求下一个对象
流水线方式:HTTP1.1版本默认方式
第一个请求都没有回来的时候,就开始请求下一个对象。
image.png

HTTP请求报文

image.png

通用格式

image.png

提交表单输入

image.png

方法类别

image.png

HTTP响应报文

image.png

HTTP响应状态码

image.png

用户-服务器状态:cookies

为了保存用户在服务器的状态,将HTTP从无状态协议变得有状态
image.png
image.png
image.png

Web缓存

image.png
image.png

缓存示例

image.png

更快地接入链路

image.png

安装本地缓存

image.png
image.png

条件GET方法

如果本地服务器Web缓存与源端不一样,可能是源端更新了。为了避免这种情况使用条件GET方法。
image.png

  1. def partial_table(p):
  2. '''''partial_table("ABCDABD") -> [0, 0, 0, 0, 1, 2, 0]'''
  3. prefix = set()
  4. res = [0]
  5. for i in range(1, len(p)):
  6. prefix.add(p[:i])
  7. postfix = {p[j:i + 1] for j in range(1, i + 1)}
  8. #print(p[:i+1],prefix,postfix,prefix & postfix or {''})
  9. res.append(len((prefix & postfix or {''}).pop()))
  10. return res
  11. def kmp_match(s, p):
  12. m = len(s);
  13. n = len(p)
  14. cur = 0 # 起始指针cur
  15. table = partial_table(p)
  16. while cur <= m - n: #只去匹配前m-n个
  17. for i in range(n):
  18. if s[i + cur] != p[i]:
  19. cur += max(i - table[i - 1], 1) # 有了部分匹配表,我们不只是单纯的1位1位往右移,可以一次移动多位
  20. break
  21. else:
  22. return True # loop从 break 中退出时,else 部分不执行。
  23. return False

HTTPS

https://blog.csdn.net/xiaoming100001/article/details/81109617