学弟学妹们使用请点个星星
开发语言:JAVA
开发工具:myeclipse2014
浏览器:Chrome
1.缓存命中
① 客户端请求某个Web数据,会先送至代理服务器中,代理服务器本身会监听80号端口接收用户请求
② 当代理服务器收到用户请求之后,会将这个请求送达至代理进程中
③ 进程创建一个子线程去处理这个请求,子线程拆除用户请求报文中的应用层首部,TCP首部,IP首部等,从而获取到请求报文中的URL
④ 对URL进行hash计算,然后和代理服务器中hash表中的缓存键进行比对,若一致则缓存命中
⑤ 寻找其中的Last-Modified:字段,发送If-Modified-Since:time请求首部给后端服务器,来询问是否数据未修改。如果服务器返回304 Not Modified,则在对应的值所指向的内存或硬盘空间上找到对应的内容数据返回响应给客户端,否则代理服务器会自行封装成请求报文,把自己当做http的客户端,向上游服务器发起请求,若内容存在,上游服务器会构建成响应报文,返回给代理服务器。当代理服务器收到响应之后,会检查该对象是否可以缓存,如若可以,会对URL进行hash之后生成一个键,存放到对应的hash表中,在相应的内存或磁盘空间上存储对应的内容数据,再返回响应给客户端
2.缓存未命中
① 客户端请求某个Web数据,会先送至代理服务器中,代理服务器本身会监听80号端口接收用户请求
② 当代理服务器收到用户请求之后,会将这个请求送达至代理进程中
③ 进程拆除用户请求报文中的应用层首部,TCP首部,IP首部等,从而获取到请求报文中的URL
④ 对URL进行hash计算,然后和代理服务器中hash表中的缓存键进行比对,不一致则缓存未命中
⑤ 代理服务器会自行封装成请求报文,把自己当做http的客户端,向上游服务器发起请求
⑥ 若内容存在,上游服务器会构建成响应报文,返回给代理服务器。
⑦ 当代理服务器收到响应之后,会检查该对象是否可以缓存,如若可以,会对URL进行hash之后生成一个键,存放到对应的hash表中
⑧ 在相应的内存或磁盘空间上存储对应的内容数据
⑨ 当操作完成之后,会将数据构建成相应报文,然后响应给客户端