zoukankan      html  css  js  c++  java
  • web请求过程

    浏览器缓存:
        按浏览器页面刷新一定是重新发送请求。因为按f5刷新时,浏览器直接向目标url发送请求。
    但是假如我们在应用服务器的前端部署了一个缓存服务器,那么也有可能拿到的还是缓存信息。
    所以,请求头需要增加两个请求项Pragma:no-cache和Cache-Control:no-cache,这两个参数在整个请求响应链中起作用,
    当然会对缓存服务器或代理服务器起作用,no-cache表示所有内容都不会被缓存,在请求头和响应头中设置。
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    ----------------------------------------------------------------------------------------------
    DNS域名解析:
    (1)域名解析意思是根据域名解析成正确的ip。用户第一次访问某个域名时,域名解析服务器返回解析的ip到客户浏览器,
    浏览器会缓存这个域名和ip的对应关系,但是缓存有限制,比如浏览器缓存的大小和时间,缓存时间太短或太长都不好,
    太短的话,可能会导致每次都需要解析,太长的话,假如ip变更,客户将访问不到变更之后正确的ip。
    而这个时间限制缓存参数可以通过TTL属性来设置。
    (2)假如浏览器缓存中不存在域名ip对应关系,那么浏览器会查看用户操作系统中是否存在解析缓存,Windows系统中,
    Windows/system32/drivers/etc/hosts中记录的就是域名和ip的对应关系,打开文档后就能看到是如何设置的,
    早期的黑客常通过修改此文件来劫持域名,使用户访问正常域名却连接到了黑客指定的ip上。而在win7中此文件被设计成了只读,
    在linux下的这个配置文件是/etc/named.conf。
    (3)以上两种方法仍然没有解决域名解析的话,就需要真正请求域名服务器来解析了。window中(网上邻居-->internet协议)可以看到
    下方一个配置DNS的地方,这个dns配置的是Local DNS Server,比如你在学校上网,那么这个ldns就在学校里,假如在小区里,那么
    这个服务器就联通或电信的SPA,服务器也在城市的某个角落里,不会很远。这个LDNS服务器性能已经很好了,他们当然也会缓存解析结果,
    缓存时间通常受域名的失效时间来控制,通常情况下,80%的域名解析都能在这里完成。LDNS承担了主要的解析任务。
    (4)如果LDNS仍然无法解析,那么就得需要Root DNS Server了,根域名服务器不会立刻返回解析结果,它返回给LDNS的是一个
    gTLD主域名服务器地址,gTLD是国际顶级域名服务器,比如.com,.cn,.org等,全球只有13台。
    (5)LDNS继续向gTLD服务器发送请求,现在,gTLD仍然不会返回结果,它会返回给LDNS一个name server域名服务器地址,
    这个地址就是网站注册域名的服务器地址,假如网站是在某个域名服务提供商那里申请的域名,那么这个域名解析任务就在
    这个域名提供商的服务器上来完成,域名解析就在这个服务器上进行,这个服务器会查询域名和ip的映射关系表,
    然后把ip和TTL值返回给LDNS,LDNS服务器再缓存起来。然后LDNS把ip和TTL值返回给用户,用户系统也会相应地缓存。
    基本流程是如此,实际上要更复杂。
    在linux和window上可以通过nslookup命令来查看域名的解析结果。
    而linux上还可以通过 dig 域名 的命令来查看dns的解析过程。

    清空dns缓存:
    dns缓存在本地和LDNS上,其主要受TTL和系统缓存大小来控制,LDNS上的缓存很难人工控制,我们可以更改本地dns缓存,比如清空缓存,windows清空dns缓存命令:
    ipconfig/flushdns ,linux命令:/etc/init.d/nscd restart 。也可以重启主机。
    在java应用中,jvm也会缓存DNS的解析结果,java解析域名通过InetAddress类来完成,使用时注意用单例模式,否则会有严重性能问题,如果每次都创建InetAdress实例,
    每次都要进行完整的域名解析,会非常耗时。
    ----------------------------------------------------------------
    CDN工作机制
    CDN是为了提高对用户的响应时间,目前通常把静态资源如图片、js、css、静态页面放在cdn上,用户访问,从主服务器上获得动态内容后再从cdn上下载静态资源,
    淘宝90%的资源要从CDN上获取。假如某个静态页面url是:cdn.taobao.com,那么在域名解析的第5步,淘宝公司的域名解析会把这个域名指向CDN全局中的
    负载均衡系统GTM,GTM会根据用户在哪里来返回离这个用户最近的CDN节点,用户拿到这个CDN节点之后,再去这个CDN节点获取这个静态文件,如果文件不存在,就会
    再去主机找资源。

    负载均衡
    负载均衡就是通过分配之后让多个服务器来完成同一个任务,比如DNS的解析过程。这样提高效率,避免网络阻塞。为用户提供一致的访问质量。
    通常分为三种架构:链路负载均衡,集群负载均衡,操作系统负载均衡,DNS的解析就是链路负载均衡。


     

  • 相关阅读:
    windows wmi
    python编码规范
    gogs安装
    mariadb-5.5安装
    python kafka
    delimiter关键字
    phpstorm设置背景图片
    linux 下mysql 关闭 启动
    通过下载git包来安装git
    git clone 某个链接时候报错Initialized empty Git repository in 不能克隆
  • 原文地址:https://www.cnblogs.com/sunyt/p/4146446.html
Copyright © 2011-2022 走看看