请求一个域名ip的缓存用处
前言
摘录自操作系统,这一段的内容很有启发,稍微加上自己的理解,写一篇博客记录一下。
缓存
缓存成功解决了速度不匹配设备之间的数据传输,并且在一般情况下,是整个系统的瓶颈;缓存的出现,有效减少了低速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的缓存用处的更多相关文章
- 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com
原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...
- 负载均衡实现,一个域名对应多个IP地址
负载均衡实现,一个域名对应多个IP地址 - 宏宇 - 博客园 https://www.cnblogs.com/cuihongyu3503319/archive/2012/07/09/2583129.h ...
- 负载均衡实现,一个域名对应多个IP地址【转载】
使用负载均衡实现,传统和常规做法,其他方式需要特殊处理.(dns轮询,或者自己做解析)1.一个域名设定多个dns服务或者服务器进行解析,同一个域名的每个解析都指向不同的ip地址,这样应答快的dns优先 ...
- 一个域名最多能对应几个IP地址?,一个IP地址可以绑定几个域名?
一个域名最多能对应几个IP地址?,一个IP地址可以绑定几个域名?谢谢 xikeboy | 浏览 31055 次 推荐于2016-04-24 14:21:14 最佳答案 1.也就是说通常情况下一个域名同 ...
- MDNS DDoS 反射放大攻击——攻击者假冒被攻击者IP向网络发送DNS请求,域名为“_services._dns-sd._udp.local”,这将引起本地网络中所有提供服务的主机都向被攻击者IP发送DNS响应,列举网络中所有服务
MDNS Reflection DDoS 2015年3月,有报告叙述了mDNS 成为反射式和放大式 DDoS 攻击中所用媒介的可能性,并详述了 mDNS 反射式攻击的原理和相应防御方式.Q3,Akam ...
- WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)
概述 发起一个http请求的过程就是建立一个socket通信的过程. 我们可以模仿浏览器发起http请求,譬如用httpclient工具包,curl命令等方式. curl "http://w ...
- 谈谈域名DNS的缓存问题
可以从很多地方看到,许多刚开始做站的朋友,对域名设置方面的知识原理一知半解,以至于为了某些测试需要,经常对域名解析大动干戈.今天改个A记录,明天又换个NS.又或者,在迁移域名,迁移网站的时候的时候由于 ...
- BaseHttpListActivity,几行代码搞定Android Http列表请求、加载和缓存
Android开发中,向服务器请求一个列表并显示是非常常见的需求,但实现起来比较麻烦,代码繁杂. 随着应用的更新迭代,这种需求越来越多,我渐渐发现了实现这种需求的代码的共同点. 于是我将Activit ...
- 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址
首先,在nginx配置中添加如下配置 server { listen ; server_name www.wenki.info; #要访问的域名 charset utf8; location / { ...
随机推荐
- Composert 的命令
(1) php artisan ----查看所有的命令帮助 (2) php artisan make:controller StudentController ----创建一个控 ...
- 张超超OC基础回顾04_实例变量修饰(@public),点语法,self关键字,多态,继承
零.实例变量修饰符 /* @public 就是实例变量修饰符 @public >可以在其它类中访问被public修饰的成员变量 >也可以在本类中访问被public修饰的成员变量 >可 ...
- Docker学习笔记_初装的Centos无ifconfig
新创建了centos容器,使用ifconfig,报无此命令. 解决办法,使用yum进行安装ifconfig 1.yum search ifconfig 2.yum install net-tools. ...
- 在Asp.Net中使用amChart统计图
怎么在自己的ASP.NET页面插入可动态更新的数据统计图呢?网上的资源倒是不少(Fusioncharts.amCharts……),在这些资源中有一个比较好用:amChart,这个工具很炫,还能与用户交 ...
- Python基础 之 int、bool、str、列表、元组、字典
数据类型 数据类型划分:可变数据类型 不可变数据类型 不可变数据类型:元组.bool.int (本身不可更改).str (可哈希) 可变数据类型:列表list.字典dict .集 ...
- python解释器的下载和安装
1.python解释器的下载 python这样的语言,需要一个解释器.而且解释器还有多种语言的实现,我们介绍的是最常用的C语言的实现,称之为Cpython.Python通过在各种操作系统上都有各自的解 ...
- HDU 3729 I'm Telling the Truth (二分匹配)
题意:给定 n 个人成绩排名区间,然后问你最多有多少人成绩是真实的. 析:真是没想到二分匹配,....后来看到,一下子就明白了,原来是水题,二分匹配,只要把每个人和他对应的区间连起来就好,跑一次二分匹 ...
- Java学习第六篇:集合类
一.Java集合类框架 Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合:从Java5以后,J ...
- SQL之DCL
DCL(Data Control Language)数据库控制语言 授权,角色控制等GRANT 授权REVOKE 取消授权 1)授权命令 grant,语法格式(SQL语句不区分大小写):Grant ...
- LibreOJ 6001 太空飞行计划(最大流)
题解:首先源点向每个实验建边,流量为经费的值,实验向器材建边,值为无限大,器材向终点建边,值为价值 然后跑一遍最大流就能跑出所谓的最大闭合图的点值之和. 代码如下: #include<queue ...