浏览器缓存

Nginx简介及配置文件详解

前提是你 提交于 2019-12-24 01:10:12
http://blog.csdn.net/hzsunshine/article/details/63687054 一 Nginx简介 Nginx是一款开源代码的 高性能HTTP服务器 和 反向代理服务器 ,同时支持 IMAP/POP3/SMTP代理服务 1.Nginx工作原理 Nginx由 内核 和 模块 组成,完成工作是通过查找配置文件将客户端请求映射到一个location block(location是用于URL匹配的命令),location配置的命令会启动不同模块完成工作。 Nginx模块分为核心模块,基础模块和第三方模块。 核心模块:HTTP模块、EVENT模块(事件)、MAIL模块。 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块、HTTP Rewrite模块。 第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块。 2.性能优势 web服务器 ,处理静态文件、索引文件以及自动索引效率高。 代理服务器,快速高效 反向代理 ,提升网站性能。 负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时 支持简单容错 和利用 算法进行负载均衡 。 性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接

什么是页面缓存

微笑、不失礼 提交于 2019-12-23 21:16:39
对于网站建设来说,页面缓存是安装在网站服务器之前的缓存服务器,用于卸载对于服务器上的静态和动态对象的请求。在 建站系统 或建站软件中页面缓存还有其它常见名称,如反向代理缓存,反向代理服务器和反向代理。经过慎重考虑,最后还是采用了页面缓存这个术语,因为在建站系统中代理程序还会负责负载平衡或SSL加速,而我们只想专注于缓存服务器对可扩展性的影响。 页面缓存会处理部分或所有请求,直到它存储的页面或数据过期,或服务器收到的请求需要没有被缓存的数据。请求失败叫做缓存未命中,原因可能是缓存满了,没有空间为最新的请求缓存数据,也可能是缓存未满,但请求的频率较低或最近重启过。未命中缓存的请求会被直接传递给web server,并且用该请求回答并填充缓存,从而替换缓存中最近很少使用的数据,或者在空白处写入数据。 在这个过程中,有三个关键点。 第一,应该在web server处理请求之前实现页面缓存,这样建站系统就会得到很大的可扩展性。生成动态内容的web server工作量会大大减少,因为计算过的结果在合适的时间被恰当的缓存了。提供静态内容的web server不需要查询的内容,可以少用一些缓存空间。因此,对于静态网站来说,缓存的作用就不那么明显了,因为输出内容本身就没有太大的计算量和负担。 第二,建站系统中要实现缓存必须使用正确的http头,确保对内容和查询结果进行最大化的缓存,并且 网站建设

前端性能优化 —— 添加Expires头与Cache-control区别

非 Y 不嫁゛ 提交于 2019-12-23 17:37:14
要:添加Expires头能有效的利用浏览器的缓存能力来改善页面的性能,能在后续的页面中有效避免很多不必要的Http请求,WEB服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本,直到指定的时间为止。 例如:Expires:Thu,15 Apr 2010 20:00:00 GMT; 他告诉浏览器缓存有效性持续到2010年4月15日为止,在这个时间之内相同的请求使用缓存,这个时间之外使用http请求。 Cathe-Control:max-age=315360000 Expires有一个非常大的缺陷,它使用一个固定的时间,要求服务器与客户端的时钟保持严格的同步,并且这一天到来后,服务器还得重新设定新的时间。 HTTP1.1引入了 Cathe-Control,它使用max-age指定组件被缓存多久, 从请求开始在max-age时间内浏览器使用缓存,之外的使用请求,这样就可以消除Expires的限制, 如果对浏览器兼容性要求很高的话,可以两个都使用。 这里对http 304 状态结合max-age做一个总结: 浏览器初次访问服务器---------------服务器返回200状态 如下图: 浏览器再次请求服务器时,浏览器会先判断max-age,如果到期则直接请求服务器,否则直接从缓存中取, 服务器收到请求后,判断文件是否被修改过,若是则直接返回200,否则返回304

网站的高性能架构---应用服务器性能优化

╄→尐↘猪︶ㄣ 提交于 2019-12-23 05:44:53
应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群和异步等。 分布式缓存   缓存无处不在,既存在于浏览器、也存在于服务器和数据库;既可以对数据缓存,也可以对文件缓存,还可以对页面片段进行缓存。   网站性能优化第一定律:优先考虑使用缓存优化性能。 缓存的基本原理   缓存是指将数据存储在相对较高访问速度的存储介质中。一方面缓存访问熟读快,可以减少访问时间;另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算即可直接使用,因此缓存还可以减少计算时间。 缓存的本质是一个内存HASH表,网站应用中,数据缓存以一对Key、Value的形式存储在Hash表中。缓存主要用来存放读写频率比较高、很少变化的数据。应用程序读取数据时,先到缓存中读取,先到缓存中读取,如果读取不到或数据已经失效,再访问数据库,并将数据写入缓存。   2.合理使用缓存 使用缓存对提高系统性能有很多好处,但是不合理使用缓存非但不能提高系统的性能,还会成为系统的累赘,甚至风险。    频繁修改的数据 :如果缓存中保存的是频繁修改的数据,就会出现数据写入缓存后,应用还来不及读取缓存,数据就已经失效,徒增系统负担,还可能读取到脏数据。    没有热点的访问: 缓存使用内存作为存储,如果应用程序访问数据没有热点,那么缓存就没有意义。   

nginx缓存配置及开启gzip压缩

a 夏天 提交于 2019-12-23 02:14:05
一:nginx缓存配置 二:nginx开启gzip 一:nginx缓存配置 在前一篇文章,我们理解过http缓存相关的知识点, 请看 这篇文章 . 今天我们来学习下使用nginx服务来配置缓存的相关的知识。 nginx配置缓存的优点:可以在一定程度上,减少服务器的处理请求压力。比如对一些图片,css或js做一些缓存,那么在每次刷新浏览器的时候,就不会重新请求了,而是从缓存里面读取。这样就可以减轻服务器的压力。 nginx可配置的缓存又有2种: 1)客户端的缓存(一般指浏览器的缓存)。 2)服务端的缓存(使用proxy-cache实现的)。 客户端的缓存一般有如下两种方式实现: 协商缓存和强缓存。具体理解什么是协商缓存或强缓存,可以看 这篇文章 . 在配置之前,我们来看下我们的项目基本架构如下: |----项目demo | |--- .babelrc # 解决es6语法问题 | |--- node_modules # 所有依赖的包 | |--- static | | |--- index.html # html页面 | | |--- css # 存放css文件夹 | | | |--- base.css # css文件,是从网上随便复制过来的很多css的 | | |--- js # 存放js的文件夹 | | | |--- jquery-1.11.3.js # jquery 文件 | |

HTTP请求流程你了解了么?

萝らか妹 提交于 2019-12-22 22:52:14
预备知识 前文没有描述到传输和协议直接的层级对应关系,大概补充下网络通信中数据传输对应的协议,首先了解下OSI(开放式系统互联:Open System InterConnection)七层 模式,及其对应不同层次的协议。 OSI体系结构 TCP/IP相关协议结构 应用层 HTTP,Telnet,FTP等 表示层 会话层 传输层 TCP,UDP 网络层 IP 数据链路层 物理层 了解到HTTP协议是建立在TCP连接基础之上的。 HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础 ,通常由浏览器发起请求,用来获取不同类型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议。 我们对HTTP不太了解的话都会存在这样的疑惑,为什么再次访问同一站点会比第一次快,登录过一次后的网站再次访问就处于登录状态等,我们 通过对HTTP请求过程的剖析来解开这些谜团。 浏览器端发起 HTTP 请求流程 浏览器输入网址: http://time.geekbang.org/index.html,之后会完成什么步骤呢 ? 1、构建请求 首先,浏览器构建 请求行 信息,构建好后,浏览器准备发起网络请求。 GET /index.html HTTP1.1 2、查找缓存 在真正发起网络请求之前

Nginx配置文件nginx.conf中文详解

时光毁灭记忆、已成空白 提交于 2019-12-22 10:09:42
######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 [

Web性能的几个常见瓶颈

不想你离开。 提交于 2019-12-22 03:52:29
瓶颈一:缓存 瓶颈一:压缩 前言:关于优化问题,随着项目经验不断累积,多方查找资料进行拼接合并,形成如下文章,之后遇到类似好的方法,会不断补充完善。 前端是庞大的,包括 HTML、 CSS、 Javascript、Image 、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么 ? 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。 总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用。 =  一、页面级优化   1. 减少 HTTP请求数   这条策略基本上所有前端人都知道,而且也是最重要最有效的。都说要减少 HTTP请求,那请求多了到底会怎么样呢 ?首先,每个请求都是有成本的,既包含时间成本也包含资源成本。一个完整的请求都需要经过 DNS寻址、与服务器建立连接、发送数据、等待服务器响应、接收数据这样一个 “漫长” 而复杂的过程。时间成本就是用户需要看到或者 “感受” 到这个资源是必须要等待这个过程结束的,资源上由于每个请求都需要携带数据,因此每个请求都需要占用带宽。另外,由于浏览器进行并发请求的请求数是有上限的 (具体参见此处 ),因此请求数多了以后,浏览器需要分批进行请求

《计算机网络—自顶向下方法》 第六章Wireshark实验:Ethernet and ARP

巧了我就是萌 提交于 2019-12-21 13:10:30
实验描述: 在本实验中,我们将 研究以太网协议和 ARP 协议 。在开始实验之前, 您可以查看课本的 6.4.1 节(链路层地址和 ARP)和 6.4.2(以太网), 您也可以去看 RFC 826(ftp://ftp.rfc-editor.org/in-notes/std/std37.txt)了解关于 ARP 的协议详细信息, 该协议可以根据 IP 地址获取远程主机的的物理地址(MAC地址)。 实验过程: 第一部分:捕获和分析以太网帧 让我们从 捕获一组以太网帧 开始研究。 请执行下列操作 : 首先,确保浏览器的缓存为空(清除浏览器缓存), 对于Chorme浏览器,如下图所示 ,然后启动 Wireshark数据包嗅探器。 打开以下 URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-ethereal-lab-file3.html 您的浏览器应显示相当冗长的美国权利法案。 接下来停止 Wireshark数据包捕获,找到您向 gaia.cs.umass.edu的 HTTP GET消 息的数据包编号以及 gaia.cs.umass.edu相应您的 HTTP回应。您的抓包结果应 看起来向下面一样: 由于本实验是关于以太网和 ARP的,我们对 IP或更高层协议不感兴趣。 因此,让我们更改 Wireshark的“捕获数据包列表”窗口

Weed3 for java 新的微型ORM框架

喜欢而已 提交于 2019-12-21 08:48:45
Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql;存储过程;事务;缓存;监听;等…) 05年时开发了第一代; 08年时开发了第二代,那时候进入互联网公司,对性能有了全新的认识; 14年时开发了第三代。因为不喜欢滥用反射,不喜欢有很多配置,所以一直在执着的没放弃。 前两代,都是在.net开发的;第三代,重点放在了java上。应该算是个功能全面且最小的ORM框架,无其它依赖,仅0.1mb。对外的接口也不多,主要由DbContext上的四个接口发起所有的操作。 因为一些执念写的东西都算是比较微型的: Snack3(Json框架 70kb,有序列化,有Jsonpath,有格式转换机制;强调构建能力) Solon(Web框架 80kb) 一个手机浏览器(0.1mb,可是有完整功能哦;算是一个创意作品) Weed3 特点和理念: 高性能:两年前有个同事测过四个ORM框架,它是性能最好的(不知道现在是不是)。 跨平台:可以嵌入到JVM脚本引擎(js, groovy, lua, python, ruby);有.net,php版本(久没维护了)。 很小巧:只有0.1Mb嘛(且是功能完整,方案丰富;可极大简化数据库开发)。 有个性:不喜欢反射、不喜欢配置…(除了连接,不需要任何配置)。 其它的:支持缓存控制和跨数据库事务(算是分布式事务的一种吧)。