缓存服务器

当你输入一个网址的时候,实际会发生什么?

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-08 20:07:29
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~ 1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器

浏览器输入URL按回车后都经历了什么?

孤街浪徒 提交于 2020-03-08 19:58:55
在浏览器上输入一个URL,按回车后,这个过程发生了什么? 1、首先,浏览器地址栏输入了URL,先解析URL,检测URL地址是否合法 2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求; 操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使用系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存) 路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存。 ISP缓存:若上述均失败,继续向ISP搜索。 3、如果没有上述缓存,则在发送HTTP请求前,需要域名解析(DNS解析),解析获取相关的IP地址。 4、浏览器向服务器发起tcp连接,与浏览器简历tcp三次握手 5、握手成功后,浏览器向服务器发送HTTP请求,请求数据包 6、服务器处理收到的请求,将数据返回至浏览器 7、浏览器收到HTTP响应 8、浏览器解码响应,如果响应可以缓存,则存入缓存 9、浏览器发送请求获取嵌入在HTML中的资源(HTML、css、javasc、图片、音乐。。。。). 10、浏览器发送异步请求 11、页面全部渲染结束 来源: https://www.cnblogs.com/lanyy/p/10793382.html

当在浏览器输入一个网址后,实际会发生什么?

坚强是说给别人听的谎言 提交于 2020-03-08 19:58:19
这个问题的回答主要是翻译自这篇英文文章 http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 。 那么,输入网址后,实际发生了什么呢?过程如下: 1、输入网址。 2、浏览器查找域名的IP地址。 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 3. 浏览器给web服务器发送一个HTTP请求 4. 网站服务的永久重定向响应 服务器给浏览器响应一个301永久重定向响应,为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?其中一个原因跟搜索引擎排名有关。如果一个页面有两个地址,就像 http://www.igoro.com/ 和 http://igoro.com/

当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

蓝咒 提交于 2020-03-08 19:57:44
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~ 1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器

在浏览器输入一个网址后,发生了什么?

扶醉桌前 提交于 2020-03-08 19:55:03
转自http://www.cnblogs.com/SarahLiu/p/5954832.html 这是面试中一道非常经典的问题。 当你在浏览器中输入一个网址,浏览器的处理过程如下: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 1 第一步 浏览器查找该域名的 IP 地址 2 第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求 3 第三步 服务器收到请求并进行处理 4 第四步 服务器返回一个响应 5 第五步 浏览器对该响应进行解码,渲染显示。 6 第六步 页面显示完成后,浏览器发送异步请求。 下面对每个环节做进一步分析: 01 浏览器查找该域名的 IP 地址: 浏览器缓存 首先是查找浏览器缓存,浏览器会缓存DNS记录一段时间,不同浏览器保存的时常不等(2分钟到30分钟不等)。 系统缓存 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用来查找这个网址的对应DNS信息。 路由器缓存 如果在系统缓存里没有找到找到对应的IP,请求会发向路由器,它一般会有自己的DNS缓存。 ISP DNS服务器 如果在路由器缓存里还是没有对应的IP,请求会被发送到ISP。 根域名服务器 如果还是没有,请求将发向根域名服务器进行搜索。找不到就说明此域名不存在。 02 浏览器根据解析得到的IP地址向 web

VS_TUN和VS_DR的arp问题

杀马特。学长 韩版系。学妹 提交于 2020-03-08 19:51:22
1. ARP协议简介 ARP(Address Resolution Protocol)协议称为 地址解析协议 ,用于将主机IP地址解析为主机的MAC地址,即 IP<-->MAC 之间一一映射。RARP协议相反,是将MAC地址解析为IP地址。 ARP解析时分两种情况: 解析目标和自己在同一网段。 A解析同网段的B,A根据自己的IP和子网掩码判断B和自己同网段,这时A就直接在这个网段上发一个ARP广播包寻求B的MAC地址,所有人都收到广播信息,但是B会将MAC地址回应给A,A缓存B的MAC地址。 解析目标和自己不在同一网段。 A根据自己的IP和子网掩码判断出B和自己不在同一个网段,这时A就向自己的网段发送一个ARP广播包用来解析网关的MAC地址,也就是路由器的接口MAC地址,然后路由器回应,A缓存回应的MAC结果。 当发送ARP请求广播后,目标设备会进行应答,其中请求数据包和应答数据包的格式非常接近。以下是请求包和应答包数据格式的 一部分 ,完整格式请百度或者翻阅TCP/IP协议卷(一)。 其中: op字段是一个1-4的值,1表示该数据帧是ARP请求包,2表示该数据帧是ARP应答包,3和4则表示RARP的请求和应答包。 src_MAC和src_IP是数据帧中的源MAC和源IP地址。这两个字段的值不一定是对应的,意思是src_IP不一定配置在src_MAC地址的接口上。 dest

浏览器缓存

匆匆过客 提交于 2020-03-08 18:52:56
缓存是性能优化中一种简单高效的方式,可以减少网络传输造成的损耗。 缓存位置: 当用户发出请求的时候,浏览器会依次寻找缓存,都没有命中才会请求网络 Service Worker Memory Cache Disk Cache Push Cache 网络请求 Service Worker 实现缓存功能一般分为三个步骤:首先需要先注册 Service Worker,然后监听到 install 事件以后就可以缓存需要的文件,那么在下次用户访问的时候就可以通过拦截请求的方式查询是否存在缓存,存在缓存的话就可以直接读取缓存文件,否则就去请求数据。 Memory Cache 也就是内存中的缓存,读取内存中的数据肯定比磁盘快。 但是内存缓存虽然读取高效,可是缓存持续性很短,会随着进程的释放而释放。 一旦我们关闭 Tab 页面,内存中的缓存也就被释放了。 Disk Cache 也就是存储在硬盘中的缓存,读取速度慢点,但是什么都能存储到磁盘中,比之 Memory Cache 胜在容量和存储时效性上。 在所有浏览器缓存中,Disk Cache 覆盖面基本是最大的。它会根据 HTTP Herder 中的字段判断哪些资源需要缓存,哪些资源可以不请求直接使用,哪些资源已经过期需要重新请求。 并且即使在跨站点的情况下,相同地址的资源一旦被硬盘缓存下来,就不会再次去请求数据。 Push Cache 是 HTTP

restfull api

扶醉桌前 提交于 2020-03-08 18:35:34
前言 在以前,一个网站的完成总是“all in one”,页面,数据,渲染全部在服务端完成,这样做的最大的弊端是后期维护,扩展极其痛苦,开发人员必须同时具备前后端知识。于是慢慢的后来兴起了 前后端分离 的思想: 后端负责 数据编造 ,而前端则负责 数据渲染 ,前端静态页面调用指定api获取到有固定格式的数据,再将数据展示出来,这样呈现给用户的就是一个”动态“的过程,而关于api这部分的设计则成了一个问题。如何设计出一个便于理解,容易使用的api则成了一个问题。 而所谓的 restful 就是用来规范我们的api的一种约束。 介绍 rest 是 REpresentational State Transfer 三个单词的缩写,由Roy Fielding于2000年论文中提出,它代表着分布式服务的架构风格。而如果想你的api被称为restful api,只要遵循其规定的约束即可。 rest设计原则 客户端-服务器:通过将用户UI与数据存储分开,我们可以简化服务器组件来提高跨多个平台的用户界面的可移植性并提高可伸缩性。 它可以比表现成前后端分离的思想。 无状态:从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上任何存储的上下文。 这表示你应该尽可能的避免使用session,由客户端自己标识会话状态。(token) 规范接口:REST接口约束定义:资源识别;

linux下突破10万高并发的nginx性能优化经验

风格不统一 提交于 2020-03-08 16:38:11
一、这里的优化主要是指对nginx的配置优化,一般来说nginx配置文件中对优化比较有作用的主要有以下几项: 1)nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。 worker_processes 8; 2)为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 3)下面这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是系统的最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。 worker_rlimit_nofile 65535; 4)使用epoll的I/O模型,用这个模型来高效处理异步事件 use epoll; 5)每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。 worker_connections 65535; 6)http连接超时时间,默认是60s,功能是使客户端到服务器端的连接在设定的时间内持续有效

Springboot中使用Redis

巧了我就是萌 提交于 2020-03-08 15:05:04
一、Springboot配置Redis pom.xml文件需要的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!--<version>2.1.4.RELEASE</version>--> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> 注意 : 1. 是spring-boot-starter-data-reds; 2. 因为Springboot 2.0 中redis客户端使用了Lettue, 其依赖于commons, 所以加入以上(似乎Jedis依然可以使用.) redis服务 : 下载redis的Windows版本, 官网是Linux版本, Windows版由微软在github上维护, 可前往下载, 压缩包解压之后, 点击redis-server.exe开启本地redis服务, 端口号6379. 可使用redisclient客户端查看数据库 二、application.properties配置 ##