缓存

当你在浏览器地址栏输入一个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的域名服务器

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

家住魔仙堡 提交于 2020-03-08 19:56:43
浏览器向DNS服务器查找输入URL对应的IP地址。 DNS服务器返回网站的IP地址。 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接 浏览器获取请求页面的html代码。 浏览器在显示窗口内渲染HTML。 窗口关闭时,浏览器终止与服务器的连接。 这其中最有趣的是第1步和第2步(域名解析)。我们输入的网址(域名)是IP地址的一个别名, 在一个DNS内,一个域名对应一个IP地址。域名系统(DNS) 的工作就是将域名与它的IP地址对应起来。DNS是分布式的,同时也是具有层级关系的。 一个域名服务器虽然只记录一个小的子网内的主机名和IP地址, 但所有的域名服务器联合起来工作,就能将全网内的域名与它们的IP地址对应起来。 这也就意味着,如果一个域名服务器无法找到某个请求域名所对应的IP地址, 它就会向其它的域名服务器发出请求进行寻找。 WEB前台的优化规则 一、尽量减少 HTTP 请求 有几种常见的方法能切实减少 HTTP 请求: 1、 合并脚本跟样式文件,如可以把多个 CSS 文件合成一个,把多个 JS 文件合成一个。 2、 CSS Sprites 利用 CSS background 相关元素进行背景图绝对定位,把多个图片合成一个图片。 二.使用浏览器缓存 在用户浏览网站的不同页面时,很多内容是重复的,比如相同的JS、CSS、图片等

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

扶醉桌前 提交于 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

浏览器缓存

匆匆过客 提交于 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接口约束定义:资源识别;

Discuz二次开发基本知识总结

给你一囗甜甜゛ 提交于 2020-03-08 17:24:29
一) Discuz!的 文件 系统 目录 注:想搞DZ开发,就得弄懂DZ中每个文件的功能。 a) Admin:后台管理功能模块 b) Api:DZ系统与其它系统之间接口程序 c) Archiver:DZ中,用以搜索引擎优化的无图版 d) Attachments:DZ中 , 用户 上传附件的存放目录 e) Customavatars:DZ中,用户自定义头像的目录 f) Forumdata:DZ缓存 数据 的存放目录 g) Images:DZ 模板 中的图片存放目录 h) Include:DZ常用 函数 库,基本功能模块目录 i) Ipdata:DZ统计IP来路用的数据 j) Plugins:DZ插件信息的存放目录 k) Templates:DZ模板文件的存放目录 l) Wap:DZ无线,Wap程序处理目录 二) 必须记熟Discuz! 数据库 设计 的每个表的功能,每个表中每个字段的功能。 关于DZ数据库设计文档,请参阅DZ相关的 项目 文档(请从本贴附件中 下载 ) 三) Discuz!的流程控制 a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主

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,功能是使客户端到服务器端的连接在设定的时间内持续有效

Redis主从配置

我怕爱的太早我们不能终老 提交于 2020-03-08 13:30:17
一、Redis主从配置 如果有一天Redis缓存崩溃了,服务器的硬件损坏,缓存就没有了,那么用户流量就会直接访问数据库,从而增大了访问数据库的次数,瞬间就会把我们的网站搞崩了,这时候就就需要主从缓存,从缓存相当于是主缓存的备份。如果主缓存坏了,用户流量也可以在从缓存中读取,主从缓存跟主从数据库是保持数据一致的。 主从数据库是用空间换时间,就是用内存换网站的访问速度,高可用性比服务器的空间重要,容灾性更强。 主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构 master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1 通过主从配置可以实现读写分离 master和slave都是一个redis实例(redis服务) 主从配置(这里配置是在一台机上,主从缓存可以是多台机器) 配置主 来源: CSDN 作者: Yauger 链接: https://blog.csdn.net/Yauger/article/details/104728419

IOS 最重量级三方库 Three20 Network 缓存机制小析:

流过昼夜 提交于 2020-03-08 12:46:23
前置知 识 : http 协议 自 带 的Last-Modified和ETag, 详细 的网上搜索下就行了。 简单 来 说 就是,服 务 器在返回 资源时包含 一个ID( 时间 或是某种token),客 户 端 缓存该I D,下一次再 请求 同一 资源时 ,包含 这个 ID,服 务 器根据此ID来判断 资源 是否改 变 ,从而返回不同的 结果 (200或是304)。 Three20 实现的默认缓存方案是: TTURLRequestCachePolicyDefault = (TTURLRequestCachePolicyMemory | TTURLRequestCachePolicyDisk | TTURLRequestCachePolicyNetwork), TTURLRequestCachePolicyNetwork 代表使用 Last-Modified 策略, TTURLRequestCachePolicyMemory | TTURLRequestCachePolicyDisk 代表使用内存和文件 缓存资源 和 资源ID, 改 变缓存方案: TTURLRequest request; //blah,blah request.cachePolicy = cachePolicy | TTURLRequestCachePolicyEtag; 这里 增加了Etag的功能,如果服 务

iOS开发缓存机制之—内存缓存机制

北战南征 提交于 2020-03-08 11:12:56
在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制。 这篇文章将介绍一下如何在iOS设备中进行缓存,本文先介绍一下将内容缓存到内存中,下一篇文章就介绍一下在iOS磁盘上缓存内容。 使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。 内存缓存我们可以使用sdk中的NSURLCache类。NSURLRequest需要一个缓存参数来说明它请求的url何如缓存数据的,我们先看下它的CachePolicy类型。 1、NSURLRequestUseProtocolCachePolicy NSURLRequest默认的cache policy,使用Protocol协议定义。 2、NSURLRequestReloadIgnoringCacheData 忽略缓存直接从原始地址下载。 3、NSURLRequestReturnCacheDataElseLoad 只有在cache中不存在data时才从原始地址下载。 4、NSURLRequestReturnCacheDataDontLoad 只使用cache数据,如果不存在cache,请求失败;用于没有建立网络连接离线模式; 5