zoukankan      html  css  js  c++  java
  • Http权威指南(服务器、缓存)

    对于web服务器(软件)大家应该不会陌生,常见的web服务器有Apache、IIS、Tomcat、Nginx、Jetty等等。

    1.基本功能

    几乎所有的web服务器都会执行以下几项同样的任务:

    1.建立连接:接受一个客户端连接,或者将其关闭;

    2.接收请求:从网络中读取一条HTTP请求报文;

    3.处理请求:对请求报文进行解释,并采取行动;

    4.访问资源:访问报文中指定的资源;

    5.构建响应:创建带有正确首部的HTTP响应报文;

    6.发送响应:将响应回送给客户端;

    7.记录日志:将事务处理记录在一个日志文件中。

    说到web服务器自身的日志功能,这里有两个实用的web服务器日志:

    access.log:这是服务器的访问日志,记录了每一次的Http请求过程,包括用户的IP,请求的资源(接口);

    error.log:错误日志,当出现报错(代码报错)时,会记录哪个文件的哪一行在执行过程中出错了;

    对于访问日志的功能,当你的网站出现漏洞时,有时候会有人通过漏洞牟利,这时候你可以根据访问日志来追踪

    是自己的哪行代码出现了漏洞,进而去修复漏洞。

    2.代理

    代理服务器就是代理客户端执行请求的服务器  

    代理服务器的角色既是客户端又是服务端,这个相信不难理解。

    代理服务器可以对客户端的请求进行处理,一般有访问控制、web缓存、转码器等等

    3.缓存

    缓存机制是用来提高性能,降低网络通讯费用的

    通常设有缓存的服务器请求是这样的:

    1.接收:缓存从网络中读取抵达的报文;

    2.解析:缓存对报文解析,提取URL和各种首部;

    3.查询:缓存看缓存服务器上有没有副本可用,如果没有,就从源服务器获取一份副本并保存;

    4.新鲜度检测:缓存服务器如果有副本可用,就查看副本是否够新鲜(是否过期),如果不够新鲜,就询问源服务器

    是否有任何更新;

    5.创建响应:缓存会用新的首部和已缓存的主体构建一条报文;

    6.发送:将响应发给客户端;

    7.日志:缓存服务器创建日志。

    针对新鲜度检测这块,我随意找了一个http响应头来说明一下:

    这是百度首页的一张图片的响应报文,(说明一下,当前时间为2018-08-07 01:37)

    我们可以看到,Data首部的时间为7月31号的16:45,也就是说从缓存服务器拿到的副本是7月31号 16:45的存储版本;

    而这个副本的过期时间是8月16号 17:48,也就是说在此时间之前,缓存服务器都不用去源服务器进行新鲜度检测;

    假设现在是8月16号18:00,我们请求这同一张图片,缓存服务器一看,该副本过期了,那是不是直接去原服务器请求新

    的资源呢?不是的,缓存会与源服务器进行核对,该文档是不是有被修改(更新),如果修改了,那就拿一份新的,存

    到缓存服务器上并响应出去,如果没被修改,那么缓存只需要获取新的首部(包括一个新的过期时间),并对缓存中的

    首部进行更新就可以了。这就是服务器再验证

    上面Expires定义了该缓存的过期日期(绝对时间),Cache-Control:max-age也是过期时间(相对时间/段)

  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/eco-just/p/9428151.html
Copyright © 2011-2022 走看看