浏览器缓存

缓存技术1

依然范特西╮ 提交于 2019-11-29 00:46:20
假设一个网站,需要提高性能,缓存可以放在浏览器,可以放在反向代理服务器,还可以放在应用程序进程内,同时可以放在分布式缓存系统中。 缓存策略图 从用户请求数据到数据返回,数据经过了浏览器,CDN,代理服务器,应用服务器,以及数据库各个环节。每个环节都可以运用缓存技术。 从浏览器/客户端开始请求数据,通过 HTTP 配合 CDN 获取数据的变更情况,到达代理服务器(Nginx)可以通过反向代理获取静态资源。 再往下来到应用服务器可以通过进程内(堆内)缓存,分布式缓存等递进的方式获取数据。如果以上所有缓存都没有命中数据,才会回源到数据库。 缓存的请求顺序是: 用户请求→HTTP 缓存→CDN 缓存→代理服务器缓存→进程内缓存→分布式缓存→数据库。 HTTP 缓存 当用户通过浏览器请求服务器的时候,会发起 HTTP 请求,如果对每次 HTTP 请求进行缓存,那么可以减少应用服务器的压力。 当第一次请求的时候,浏览器本地缓存库没有缓存数据,会从服务器取数据,并且放到浏览器的缓存库中,下次再进行请求的时候会根据缓存的策略来读取本地或者服务的信息。 HTTP 缓存流程图 一般信息的传递通过 HTTP 请求头 Header 来传递。目前比较常见的缓存方式有两种,分别是 强制缓存 对比缓存 强制缓存 当浏览器本地缓存库保存了缓存信息,在缓存数据未失效的情况下,可以直接使用缓存数据

6.Web基础之http协议

别等时光非礼了梦想. 提交于 2019-11-29 00:34:02
Http协议介绍  HTTP 全称: Hyper Text Transfer Protocol 中文名:超文本传输协议 包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。 html文件->包含各种各样的元素(URL链接)->形成WebPage简称web页面 URL 即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。 URL 由协议、主机和端口(默认为80)以及文件名三部分构成:  是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。 Http工作原理  1.首先,当你在浏览器中输入一个网址的时候( https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%9B%BE%E8%80%81%E6%B9%BF&rsv_pq=c177c4df0026ba3e&rsv_t=e001VxO8FQ8I6s1o1i0km8IYEX2%2F7PwwkwTB6FC%2FXU9Mmwz24Z4i%2BnYoP0I&rqlang

架构整体认知

≡放荡痞女 提交于 2019-11-29 00:04:15
1、引言 本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知。文章最后汇总了一些架构设计的原则。 2、程序员成长线 这是一条成长线的表意图,有两个部分:图上左侧的路径,是匹配不同成长阶段,对应不同职业角色;右侧是一条由不同成长阶段组成的成长线,包括如下: 征途:启程之初 修炼:程序之术 修行:由术入道 徘徊:道中彷徨 寻路:路在何方 蜕变:破茧成蝶 3、相关文章 《 新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实践 》 《 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面 》 《 一篇读懂分布式架构下的负载均衡技术:分类、原理、算法、常见方案等 》 《 快速理解高性能HTTP服务端的负载均衡技术原理 》 《 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路 》 《 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力 》 《 小米技术分享:解密小米抢购系统千万高并发架构的演进和实践 》 《 通俗易懂:如何设计能支撑百万并发的数据库架构? 》 4、基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。 1)什么是分布式? 系统中的多个模块在不同服务器上部署

谈"http get和post的区别"

房东的猫 提交于 2019-11-28 22:46:01
——以下内容如有各种问题,烦请指出,谢谢各位^_^—— 最基本的Java程序员面试题都有这个题 ——http get和post的区别? 不少人大学还没毕业就知道,就算不知道也会去搜,我记得我快毕业那会,简单搜出来,排在前面的大概就这么几个区别: 1、get用于获取数据,post用于提交数据 2、get提交参数追加在url后面,post参数可以通过http body提交 3、get的url会有长度上的限制,则post的数据则可以非常大 4、get提交信息明文显示在url上,不够安全,post提交的信息不会在url上显示 5、get提交可以被浏览器缓存,post不会被浏览器缓存 现在回头总结下,发现自己快毕业哪会自己真是什么都不知道啊,当时网上搜出来的这份东西就是有误的啊,国内也是各种传来传去,错误的到处看得到,都快成标准答案了。今年5月用netty http 些服务端程序时,调接口无意发现了原来get也可以使用http body提交数据,抽空弄了下tomcat,发现也可以啊。今天整理笔记看到了这里,觉得有必要在博客上记录一下,避免后来人继续犯错。 一点一点的说 第1点:rfc2616说get方法用于获取指定uri所代表的资源,应该设计成幂等的(其他情况不变时,多次请求返回同样的结果,差不多算是只读),不过在很长一段时间内,get方法都有“写”功能,最简单的例子就是/delete?id

Http协议与TCP协议简单理解

谁都会走 提交于 2019-11-28 22:11:38
  TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。   随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次tcp连接就显得低效了。因此Keep-Alive被提出用来解决效率低的问题。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。虽然这里使用TCP连接保持了一段时间

nginx.conf配置详解

為{幸葍}努か 提交于 2019-11-28 22:01:18
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx/logs/nginx.pid; #指定进程可以打开的最大描述符:数目 #工作模式与连接数上限 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 #现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 #这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 worker_rlimit_nofile 65535; events { #参考事件模型,use [

fiddler关于缓存问题解释

和自甴很熟 提交于 2019-11-28 20:16:55
HTTP缓存是WEB性能优化的重要手段 也是WEB工程师的必备知识技能 1. 缓存作用? 降低网络带宽消耗; 降低服务器压力; 降低资源下载延迟,加快页面响应速度; 2. 本文重点... 浏览器 会 缓存一些东西(CSS、JS、图片),那么... 缓存哪些?不缓存哪些? 缓存多长时间?何时过期? 缓存何时更新? 如何不用缓存? F5、Ctrl+F5有何异同? .... 3. F5、Ctrl+F5有何异同? 先来感受一波浏览器缓存机制; 测试环境:IE11、Firefox、Chrome、Opera 分析工具:Fiddler 测试代码: 测试场景: 下面直接晒测试结果... 场景1:首次加载资源(浏览器无缓存) 各浏览器表现一致,从服务器端下载完整资源,响应码200。 场景2:地址栏按ENTER重新加载 各浏览器会向服务器确认自身缓存是否过期,服务器若发现资源未改变,则响应304,指示浏览器可继续使用自身缓存,无需重新下载资源。 注:IE/Firefox的请求头一样;Chrome/Opera的请求头一样; 场景3、场景4:按F5、刷新按钮 与在地址栏按ENTER类似,各浏览器会向服务器确认自身缓存是否还可以继续使用。 场景5:按Ctrl+F5 按Ctrl+F5,浏览器会放弃自身缓存,重新从服务器下载资源。 4. HTTP缓存体系 下面展开讲解 If-Modified-Since

查看浏览器资源的一些命令汇总

穿精又带淫゛_ 提交于 2019-11-28 20:11:44
基于浏览器Chrome 61版本=========== 一、about:net-internals/ 1、在浏览器命令行输入: about:net-internals/ 可看到如下信息: 1、DNS: 里面记录了浏览器的dns缓存,点击“clear host cache” 可以清除浏览器dns缓存。 DNS是域名解析服务,将域名转成IP访问。 如何查询域名对应ip :浏览器先查询自己的缓存,查不到,则调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址 DNS查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索 2、HSTS ( HTTP Strict Transport Security:) 有的https证书没有经过验证,默认是拒绝访问的,可以通过设置强制打开。选择HSTS选项卡,添加Domain;也可在下方删除和查询domain 3、Sockets 之前的博文介绍过Socket,它是传输层的协议,是用于应用层和TCP/IP协议簇去通信的一个抽象出来的中间层,。 查看浏览器的sockets的状态: 来源: https://blog.csdn.net/qq_41838901/article/details/100122620

禁止网站读缓存

丶灬走出姿态 提交于 2019-11-28 19:47:08
  最近开发又遇到一个问题可能权限验证没做好,每次退出然后回退的时候总是能进去首页,也就是未验证访问页面这个问题,这个问题对于webform有点棘手,因为浏览器回退的时候无论如何也不会触发Page_load事件,所以想在这个地方处理的想法被否决。   最后还是利用Gobal.asax页面来整个网站禁用缓存,目前觉得这种方法可能会影响性能但是目前好像也只有这方法能防止跨页面访问,下面就是全站点禁用缓存的方法。 protected void Application_BeginRequest(Object sender, EventArgs e) { HttpContext.Current.Response.Cache.SetNoStore(); }    来源: https://www.cnblogs.com/AndyLin/p/11424221.html

C# HTTP系列8 GET与POST对比说明

▼魔方 西西 提交于 2019-11-28 19:25:42
系列目录 【已更新最新开发文章,点击查看详细】 HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。 HTTP 的工作方式是客户机与服务器之间的请求-应答协议。 web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据 GET方法 查询字符串(名称/值对)是在 GET 请求的 URL 中发送的 。 /test/demo_form.asp.net?name1=value1&name2=value2 在约定中,参数是写在 ? 后面,用 & 分割。 解析报文的过程是通过获取 TCP 数据,用正则等工具从数据中获取 Header 和 Body,从而提取参数。 比如header请求头中添加token,来验证用户是否登录等权限问题。 也就是说