前言

摘录自操作系统,这一段的内容很有启发,稍微加上自己的理解,写一篇博客记录一下。

缓存

缓存成功解决了速度不匹配设备之间的数据传输,并且在一般情况下,是整个系统的瓶颈;缓存的出现,有效减少了低速IO设备的访问频率,从而大幅度提升了速度。比如在处理高并发的场景,常规的mysql根本不够,上万的请求数据库就已经崩了;但往往高并发场景是读多写少,所以可以利用缓存,完全可以在数据库和缓存里都写一份,读的时候大量走缓存就行了。数据库redis 轻轻松松单机几万的并发,就是用了从缓存中存储数据、读写数据的。

浏览器请求一个域名ip的缓存用处

(1)浏览器内部都有dns客户端,首先查询本地dns缓存中是否有该域名的ip,如果有就直接去访问该ip。如果没有,该dns客户端首先查找自己主机所设置的dns服务器,然后去该dns服务器去查询是否有该域名的ip。
(2)如果该dns服务器本地缓存中有该域名的A记录(域名与ip地址的对应记录),则直接返回给浏览器中的dns客户端。若没有该域名的A记录,就通过递归的方式向上询问其他dns服务器,直到遇到A记录,此时这条递归路线上的所有被询问过的dns服务器,都会将此域名对应的A记录缓存到自己的cache中,以备下次有相同域名查询时直接返回。这一点很像路由算法里的LS算法,查询的路由器的信息返回后都会被记录。
(3)浏览器中的dns客户端得到此域名的ip地址后,也将此域名和ip放在自己的缓存中,以备下次用户再键入同一域名时,避免再查一次ip。
(4)浏览器开始通过网络用http协议访问该ip地址的80端口
(5)一般情况下该ip对应的设备不是最终的Web服务器,因为很少有人会把Web服务器直接暴露在公网,假设该ip对应的设备是台网关(一般是硬件路由设备),该网关检查本地缓存中是否有相关Web服务器的缓存,若有则直接将该http请求分配给缓存中的Web服务器。否则从服务器列表中重新分配一台Web服务器,将该http请求转发给该Web服务器处理。随后将该Web服务器的IP地址(内网地址)和端口号缓存起来,以备下次该用户的请求到来时,依然给Web服务器。有的网关可以识别用户cookie信息,从而可以将该请求再次落到 上一个请求的Web服务器上。
(6)Web服务器拿到请求后,如果是静态请求,先检查自己的缓存中是否有该页面的记录,若没有则直接从硬盘中取出页面,将其返回后存入本地静态缓存中。如果为动态请求,则先交给自己的cgi去处理。
(7)cgi拿到请求后,先检查自己的换粗系统,如memcache,如果缓存中没有,则与数据库建立链接,向数据库发出请求
(8)数据库也是先检查自己的缓存,若没有结果集,则从表中检索到数据后返回,并将结果集缓存起来
(9)cgi拿到数据后,返回给web服务器,并将数据缓存到memcache中
(10)web服务器拿到数据后,将数据返回给网关。由于是动态数据,不需要缓存。
(11)网关拿到数据后,直接返回给浏览器
(12)如果浏览器发现数据信息中含有静态数据,则将静态数据缓存到用户的internet临时目录中。
静态数据如图片等信息,动态数据一般如ajax的数据或者js返回的json数据等数据。

请求一个域名ip的缓存用处的更多相关文章

  1. 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com

    原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...

  2. 负载均衡实现,一个域名对应多个IP地址

    负载均衡实现,一个域名对应多个IP地址 - 宏宇 - 博客园 https://www.cnblogs.com/cuihongyu3503319/archive/2012/07/09/2583129.h ...

  3. 负载均衡实现,一个域名对应多个IP地址【转载】

    使用负载均衡实现,传统和常规做法,其他方式需要特殊处理.(dns轮询,或者自己做解析)1.一个域名设定多个dns服务或者服务器进行解析,同一个域名的每个解析都指向不同的ip地址,这样应答快的dns优先 ...

  4. 一个域名最多能对应几个IP地址?,一个IP地址可以绑定几个域名?

    一个域名最多能对应几个IP地址?,一个IP地址可以绑定几个域名?谢谢 xikeboy | 浏览 31055 次 推荐于2016-04-24 14:21:14 最佳答案 1.也就是说通常情况下一个域名同 ...

  5. MDNS DDoS 反射放大攻击——攻击者假冒被攻击者IP向网络发送DNS请求,域名为“_services._dns-sd._udp.local”,这将引起本地网络中所有提供服务的主机都向被攻击者IP发送DNS响应,列举网络中所有服务

    MDNS Reflection DDoS 2015年3月,有报告叙述了mDNS 成为反射式和放大式 DDoS 攻击中所用媒介的可能性,并详述了 mDNS 反射式攻击的原理和相应防御方式.Q3,Akam ...

  6. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    概述 发起一个http请求的过程就是建立一个socket通信的过程. 我们可以模仿浏览器发起http请求,譬如用httpclient工具包,curl命令等方式. curl "http://w ...

  7. 谈谈域名DNS的缓存问题

    可以从很多地方看到,许多刚开始做站的朋友,对域名设置方面的知识原理一知半解,以至于为了某些测试需要,经常对域名解析大动干戈.今天改个A记录,明天又换个NS.又或者,在迁移域名,迁移网站的时候的时候由于 ...

  8. BaseHttpListActivity,几行代码搞定Android Http列表请求、加载和缓存

    Android开发中,向服务器请求一个列表并显示是非常常见的需求,但实现起来比较麻烦,代码繁杂. 随着应用的更新迭代,这种需求越来越多,我渐渐发现了实现这种需求的代码的共同点. 于是我将Activit ...

  9. 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址

    首先,在nginx配置中添加如下配置 server { listen ; server_name www.wenki.info; #要访问的域名 charset utf8; location / { ...

随机推荐

  1. Spring整合Junit4进行单元测试

    一. 添加依赖包(maven) <dependency> <groupId>junit</groupId> <artifactId>junit</ ...

  2. sql2012增加Sequence对象

    官方给出了一大堆SQL2012相对于SQL2008R2的新特性,但是大多数对于普通开发人员来说都是浮云,根本用不到,下面就说说一些对于开发人员来说比较有用的新特性. Sequence对象对于Oracl ...

  3. char(10)、varchar(10)、nchar(10)、nvarchar(10)的区别

    CHAR CHAR是定长的,当输入的字符小于10时,会在后面补空值,如果长度大于10,则会截取超出的字符 CHAR字段上的索引效率级高 VARCHAR 存储边长数据,但存储效率没有CHAR高 从空间上 ...

  4. Java IO简介

    -------------siwuxie095                 Java IO简介:     IO 也写作"I/O",可理解为 In 和 Out,即 输入 与 输出 ...

  5. 对输入字符进行HTML转义 OR  去HTML标签

    /** * 对输入字符进行HTML转义 * @param mixed $data */ public static function escape($data) { if(is_array($data ...

  6. 几个常用的HTTP状态码

    200:客户端请求成功 302:临时跳转,跳转的地址通过Location指定 400:客户端请求有语法错误,不能被服务器识别 403:服务器收到请求,但是拒绝提供服务 404:请求的资源不存在 500 ...

  7. 特征选择Boruta

    A good feature subset is one that: contains features highly correlated with (predictive of) the clas ...

  8. flex 布局的深入研究

    对于flex盒模型的设计期望 flex盒模型是被期望设计成 1:在任何流动的方向上(包括上下左右)都能进行良好的布局 2:可以以逆序 或者 以任意顺序排列布局 3:可以线性的沿着主轴一字排开 或者 沿 ...

  9. 运行monitor提示需要安装旧JAVA SE 6运行环境

    MAC系统下运行monitor命令 ➜ tools git:(master) ✗ monitor 提示如下: 若要打开Eclipse.app,您需要Java SE 6 runtime,您想现在安装一个 ...

  10. css总结14:CSS 分页实例

    1 作用:如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 例1 :以下实例演示了如何使用 HTML 和 CSS 来创建分页: 正常样式 <!DOCTYPE html>< ...