浏览器缓存

Mac-Safari无法建立安全连接

岁酱吖の 提交于 2019-12-19 04:43:21
Mac-Safari无法建立安全连接 概述 今天突然safari无法访问百度等网站,提示为: Safari 打不开页面 xxx ,因为无法与服务器 xxx 建立安全连接 但是我用其他浏览器比如Chrome却可以访问。 问题解决 猜测是缓存原因,将缓存全部清理后,所有打不开的网页恢复正常。 清理缓存方法可见 这里 来源: CSDN 作者: 迷路剑客 链接: https://blog.csdn.net/baichoufei90/article/details/103600480

前端优化方案

末鹿安然 提交于 2019-12-19 02:28:41
什么是前端 性能 优化(what)? 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度。 为什么要做前端性能优化(why)? 在构建web站点的过程中,任何一个细节都有可能影响网站的访问速度,如果不了解性能优化知识,很多不利网站访问速度的因素会形成累加,从而严重影响网站的性能,导致网站访问速度变慢,用户体验低下,最终导致用户流失。 1. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。 2. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。 总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用。 从浏览器发起请求到页面能正常浏览都有哪些阶段(process)? 预处理——>DNS解析——>建立连接——>发起请求——>等待响应——>接受数据——>处理元素——>布局渲染 如何优化——性能优化的具体方法? 一)内容层面 1、DNS解析优化 (DNS缓存、减少DNS查找、keep-alive、适当的主机域名) 2、避免重定向(/还是需要的) 3、切分到多个域名 4、杜绝404 二)网络传输阶段 1、减少传输过程中实体的大小 1)缓存 2)cookie优化 3)文件压缩( Accept-Encoding: g

高性能网站建设指南----笔记

随声附和 提交于 2019-12-19 02:00:28
小概述: 1.只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%的时间花在了下载页面中的所有组件上【js,css,image,flash...】。 2.如果浏览器和服务器都支持的话,可以使用压缩来减小响应的大小。浏览器可以使用Accept-Encoding头来声明它支持的压缩,服务器使用Content-Encoding头来确认响应已被压缩。 3.条件GET请求 如果浏览器在其缓存中保留了组件一个副本,但并不确定它是否仍然有效,就会生成一个条件GET请求,即在请求头中使用If-Modified-Since头将最后修改时间发送给服务器,请求服务器验证该副本从最后修改时间以来有没有被更新过,如果 没有更新过,服务器会返回一个"304 Not Modified"状态码并不再发送响应体,浏览器直接使用缓存中的这个副本,从而得到一个更小且更快的响应。 请求: GET /us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b2.js HTTP/1.1 Host: us.js2.yimg.com User-Agent: Mozilla/5.0 (...) Gecko/20061206 Firefox/1.5.0.9 Accept-Encoding: gzip,deflate If-Modified-Since: Wed, 22

HTTP报头

无人久伴 提交于 2019-12-18 20:52:16
HTTP协议详解之消息报头篇 HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。 HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。 每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。 1、普通报头 在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。 eg: Cache-Control 用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。 请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached; 响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage. eg:为了指示IE浏览器(客户端)不要缓存页面

《高性能网站建设指南》读书笔记

主宰稳场 提交于 2019-12-18 15:23:17
规则 1 -减少 HTTP 请求 请求网页时只有 10 %- 20 %的最终用户响应时间花在接收请求的 HTMl 文档上,剩下的 80 %- 90 %时间花在为 HTML 文档所引用的所有组建(图片,脚本,样式表, Flash 等)进行的 HTTP 请求上,因此改善响应时间的最简单途径就是减少组件的数量,并由此减少 HTTP 请求数量。 图片地图:我们可以将多个图片完成的功能,使用一个图片,根据的不同区域来响应不应的请求。 合并脚本和样式表:每个文件都会导致一个 HTP 请求,尽量将 css 和 js 合并到一个文件中。 规则 2 -使用内容发布网络 在多个地理位置不同的服务器上部署内容,如果 web 服务器离拥护更近,则一个 http 请求的响应时间将缩短,如果组件 web 服务器离拥护更近,则多个 http 请求的响应时间将缩短。有很多公司提供 CDN (内容发布网络)服务。 CDN 用于发布静态内容,如图片,脚本,样式表和 Flash 。 规则 3 -添加 Expires 头 使用 Expires 来设置浏览器缓存,指到指定的时间为止一直访问缓存中的内容。另外在 http1.1 中引入了 cache - control 头来克服 Expires 头的限制,因为 Expires 头使用一个特定时间,它要求服务器和客户端的时钟严格同步,过期时间需要经常检查

使用API网关构建微服务

二次信任 提交于 2019-12-18 13:54:04
本文总结 非常类似于API Manager提供的多租户订阅服务的功能。 将应用程序构建为一组微服务时,需要确定应用程序客户端 如何与微服务交互 。本文中,我们将讨论一下这对客户端与应用程序之间的通信有什么影响,并提出一种使用API网关的方法。 当使用微服务架构时,产品详情页面显示的数据归多个微服务所有。 客户端与微服务直接通信 从理论上讲,客户端可以直接向每个微服务发送请求。每个微服务都有一个公开的端点(https ://<serviceName>.api.company.name)。该URL将映射到微服务的负载均衡器,由它负责在可用实例之间分发请求。为了获取产品详情,移动客户端将逐一向上面列出的N个服务发送请求。 遗憾的是,这种方法存在挑战和局限。一个问题是客户端需求和每个微服务暴露的细粒度API不匹配。在这个例子中,客户端需要发送7个独立请求。在更复杂的应用程序中,可能要发送更多的请求。例如,按照Amazon的说法,他们在显示他们的产品页面时就调用了数百个服务。然而,客户端通过LAN发送许多请求,这在公网上可能会很低效,而在移动网络上就根本不可行。这种方法还使得客户端代码非常复杂。 客户端直接调用微服务的另一个问题是,部分服务使用的协议不是Web友好协议。一个服务可能使用Thrift二进制RPC,而另一个服务可能使用AMQP消息传递协议

Header Manipulation的认识和解决

纵饮孤独 提交于 2019-12-18 10:51:02
Header Manipulation Abstract HTTP 响应头文件中包含未验证的数据会引发 cache-poisoning、cross-site scripting、cross-user defacement、page hijacking、cookie manipulation 或 open redirect。 Explanation 以下情况中会出现 Header Manipulation 漏洞: 1. 数据通过一个不可信赖的数据源进入 Web 应用程序,最常 见的是 HTTP 请求。 2. 数据包含在一个 HTTP 响应头文件里,未经验证就发送给了 Web 用户。 如同许多软 件安全漏洞一样,Header Manipulation 只是通向终端的一个途径,它本身并不是终端。 从本质上看,这些漏 洞是显而易见的: 一个攻击者将恶意数据传送到易受攻击的应用程序,且该应用程序将数据包含在 HTTP 响 应头文件中。 其中最常见的一种 Header Manipulation 攻击是 HTTP Response Splitting。 为了成功地实施 HTTP Response Splitting 盗取,应用程序必须允许将那些包含 CR(回车,由 %0d 或 \r 指定)和 LF(换 行,由 %0a 或 \n 指定)的字符输入到头文件中。

ASP.NET性能优化

情到浓时终转凉″ 提交于 2019-12-18 05:46:18
1. 数据库访问性能优化   数据库的连接和关闭   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。   连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。   使用存储过程   存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。   另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。   优化查询语句   ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句

性能提升的14条规则(九)

跟風遠走 提交于 2019-12-18 01:14:18
规则9——减少DNS查找 Internet是通过IP地址来查找服务器的。由于IP地址很难记忆,通常使用包含主机名的URLLAI 来取代它,但当浏览器发送其请求时,IP地址仍然是必需的。这就是Domain Name System(DNS)所处的角色。DNS将主机名映射到IP地址上,就像电话本将人名映射到他们的电话号码一样。当你在浏览器中键入 www.yahoo.com 时,连接到浏览器的DNS解析器会返回服务器的IP地址。 这个解释抢到了DNS——URL和实际宿主它们的服务器之间的一个间接层——的另外一项优点。如果一个服务器被另外一个具有不同IP地址的服务器取代了,DNS允许用户使用同样的主机名来连接到新的服务器。或者,比如在 www.yahoo.com 的例子中,可以将多个IP地址关联到一个主机名,为网站提供高冗余度。 然而,DNS也是开销。通常浏览器查找一个给定的主机名的IP地址要花费20~120毫秒。在DNS查找完成之前,浏览器不能从主机名那里下载到任何东西。响应时间依赖于DNS解析器(通常由你的ISP提供)、它所承担的请求压力、你与它之间的距离和你的宽带速度。在从浏览器的角度回顾完DNS的工作后,我将介绍如何减少页面花在DNS查找上的时间。 DNS缓存和TTL DNS查找可以被缓存起来以提高性能。这种缓存可以发生在由你的ISP或局域网中的一台特殊的缓存服务器上

HTTP的缓存机制

﹥>﹥吖頭↗ 提交于 2019-12-17 21:58:08
前面的话 缓存机制可以有很多种:比如客户端缓存、服务端缓存、代理服务器缓存等。 而本文主角HTTP的缓存是 浏览器缓存 。为什么这么说,下面来详细介绍一下。 HTTP缓存分类 HTTP缓存可以分为 强缓存 与 协商缓存 。 强制缓存 当缓存数据库中已经有所请求的数据时,客户端直接从缓存数据库中获取数据。 当缓存数据库中没有要请求的数据时,客户端才会从服务端获取数据,并且服务器会将数据和缓存规则一起返回,缓存规则信息包含在响应头中。 Expires: 将资源失效的日期告知客户端。Expires是HTTP1.0的产物,先都用Cache-Control代替。 Cache-Control: 属性很多,用来控制缓存机制。 private:对指定客户端提供缓存 public:任何客户端与代理服务器都可以缓存 max-age:缓存内容在t秒之后失效 no-cache: 需要使用协商缓存来验证缓存数据 no-store: 所有资源都不缓存 协商缓存 客户端会先从缓存数据库中获取到一个缓存数据的标识,得到标识后请求服务器端验证是否失效,如果没有失效服务器端会返回304,此时客户端就可以直接从缓存数据库中获取数据。如果标识失效了,服务器会返回更新后的数据。 Last-Modified: 服务器在响应请求时,会告诉浏览器资源的最后修改时间 if-Modified-Since:浏览器再次请求服务器的时候