请求一个域名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 / { ...
随机推荐
- Spring Bean定义的三种方式
<!--Spring容器启动配置(web.xml文件)--> <context-param> <param-name>contextConfigLocation&l ...
- 2-2 groovy基础知识-理论介绍
- Linux vi的基本操作
进入命令 vi <文件名> 如 vi test 如果test文件存在,则直接打开编辑.如果不存在,则新建一个test的文件,这个新建的文件如果不保存的话,退出编辑器后也不会保存到硬盘中. ...
- jsp Ajax请求(返回html标签)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- eclipse——执行Maven命令
右键pom.xml文件 点击 m2 Maven build... 输入要执行的命令,点击Run 控制台会打印maven运行过程
- bootstrap列排序
<!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 列排序</title> <li ...
- 现代C++学习笔记之一入门篇:智能指针(C++ 11)
原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保 ...
- MVC5中 在更新 Microsoft.Aspnet.Identity 后编译器错误
环境:vs2013预览版chs,我试着创建vb.net web应用,从对话框中选择MVC和WebAPI.编译ok了.通过NuGet管理器更新了Microsoft.Aspnet.Identity.Cor ...
- .Net 项目代码风格规范
最近没啥时间自己状态也不是很好,公司的事情忙,自己也有一些事情要处理,所以好久没有写博客了.利用公司午休时间写一写,以下是参考了一些资料,整理出来,共勉之. 代码风格没有正确与否,重要的是整齐划一,清 ...
- C++内存管理之shared_ptr
----------------------------------------shared_ptr--------------------------------------- 引子 c++中动态 ...