浏览器缓存

HTML5本地存储Localstorage

早过忘川 提交于 2019-12-21 04:53:07
什么是localstorage 前几天在老项目中发现有对cookie的操作觉得很奇怪,咨询下来是要缓存一些信息,以避免在URL上面传递参数,但没有考虑过cookie会带来什么问题: ① cookie大小限制在4k左右,不适合存业务数据 ② cookie每次随HTTP事务一起发送,浪费带宽 我们是做移动项目的,所以这里真实适合使用的技术是localstorage,localstorage可以说是对cookie的优化,使用它可以方便在客户端存储数据,并且不会随着HTTP传输,但也不是没有问题: ① localstorage大小限制在500万字符左右,各个浏览器不一致 ② localstorage在隐私模式下不可读取 ③ localstorage本质是在读写文件,数据多的话会比较卡(firefox会一次性将数据导入内存,想想就觉得吓人啊) ④ localstorage不能被爬虫爬取,不要用它完全取代URL传参 瑕不掩瑜,以上问题皆可避免,所以我们的关注点应该放在如何使用localstorage上,并且是如何正确使用。 localstorage的使用 基础知识 localstorage存储对象分为两种: ① sessionStrage: session即会话的意思,在这里的session是指用户浏览某个网站时,从进入网站到关闭网站这个时间段,session对象的有效期就只有这么长。 ②

web后台开发常用的缓存技术

Deadly 提交于 2019-12-21 03:18:33
在WEB开发中用来应付高流量最有效的办法就是用缓存技术,能有效的提高服务器负载性能,用空间换取时间。 1.缓存一般用来: 11.存储频繁访问的数据 1.2.临时存储耗时的计算结果 1.3.内存缓存减少磁盘IO 2.使用缓存的2个主要原因: 2.1降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,网站就显得更灵敏。 2.2降低网络传输:副本被重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护了。 在WEB开发中,缓存可以分为: 一、数据库端缓存 1.1数据库的缓存一般由数据库提供,可以对表建立高速缓存。数据库中,用户可能多次执行相同的查询语句,为了提高查询效率,数据库会在内存划分一个专门的区域,用来存放用户最近执行的查询,这块区域就是缓存。(参考MYSQL缓存) 1.2“空间换时间”,比如建一个表来存储另外一个表某个类型的数据的总条数,在每次更新数据的时候同事更新 数据表和统计条数的表。在需要获取某个类型的数据的条数的时候,就不需要select count去查询,直接查询统计表就可以了,这样可以提高查询的速度和数据库的性能。 1.3数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中

Apache深度优化

一世执手 提交于 2019-12-20 23:26:28
一、开启apache的Gzip(deflate)功能 gzip可以极大的加速网站,压缩比率通常在40%~80%之间,在之前的版本中,Gizp是第三方压缩工具,但是在Gzip 2版本后,Apache自己开发了deflate模块,用来实现压缩功能。 如果要开启apache的压缩功能,需要在编译安装apache时,增加“--enable-deflate”配置项,并且必须在主配置文件中打开下面两个模块: LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so 注意:如果在编译安装时,没有增加“--enable-deflate”选项,可以使用DSO方式安装此功能,如下: [root@www ~]# cd /root/httpd-2.4.23/modules/filters/ #切换至apache 源码包 mod_deflate 所在的目录下 [root@www ~]# /usr/local/http-2.4.23/bin/apxs -c -i -a mod_deflate.c #以 dso 的方式编译安装到 apache 中 如果报错如下: 此报错是缺少zlib-devel的安装包,直接执行“yum -y install zlib-devl”进行安装即可

HTTP协议

随声附和 提交于 2019-12-20 11:34:08
一 HTTP概述 HTTP即超文本传输协议。这个协议 详细规定了浏览器和万维网服务器之间互相通信的规则。 HTTP 就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫 “ 请求协议 ” ;服务器发送给客户端的格式叫 “ 响应协议 ” 。 特点: HTTP叫超文本传输协议,基于请求/响应模式的! HTTP是无状态协议。 URL :统一资源定位符,就是一个网址: 协议名 :// 域名 : 端口 / 路径,http://www.baidu.com/ 二 请求协议 请求协议的格式如下: 请求首行; // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1 请求头信息;// 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost 空行; // 用来与请求体分隔开 请求体。 // GET没有请求体,只有POST有请求体。 浏览器发送给服务器的内容就这个格式的,如果不是这个格式服务器将无法解读!在 HTTP 协议中,请求有很多请求方法,其中最为常用的就是 GET 和 POST 。不同的请求方法之间的区别,后面会一点一点的介绍。 2.1   GET 请求 HTTP默认的请求方法就是GET * 没有请求体 *

http及浏览器相关知识点归纳

走远了吗. 提交于 2019-12-20 10:27:06
http是应用层协议,采用请求/响应模型 1、浏览器地址栏输入URL地址后发生了什么? 浏览器判断地址是否是合理的URL地址,是否是http协议请求,如果是则进入下一步 浏览器对此URL进行缓存检查:如果存在缓存则从本地提取文件(from memory cache,返回200),如果缓存过期或缓存不存在,则发起远程请求 向DNS服务器发送请求,解析URL对应的IP地址 客户端根据IP地址,连同cookie、userAgent等信息向web服务器发送请求,经过三次握手建立TCP连接 客户端向服务器端发送http请求,该请求作为TCP三次握手的第三个报文的数据发送给服务器 ngnix根据URL做服务分发,分发到后端服务器或者是静态资源服务器, 首屏请求一般是分发到静态服务器返回一个html 服务器端处理请求返回http响应报文,如果浏览器访问过该页面,缓存上有对应的资源,与服务器最后修改记录对比,一致返回304,否则返回200和对应资源 如果是200无缓存,则浏览器接收到信息并开始下载该html文件;如果是304有缓存,则浏览器从本地提取文件 释放TCP连接 浏览器解析该html文本并显示内容,同时使用和设置缓存 补充: 浏览器渲染引擎工作流程: 解析html构建DOM树时,渲染引擎会将html文件的标签元素解析成多个DOM元素对象节点,并且将这些节点根据父子关系组成一个树结构

HTTP协议格式及基础

故事扮演 提交于 2019-12-20 04:53:34
   HTTP请求数据: HTTP请求信息由3部分组成: ① 请求方法 URI 协议/版本 ② 请求头(Request Header) ③ 请求正文 HTTP 请求 数据 例子举例: GET/sample.Jsp HTTP/1.1 Accept:image/gif.image/jpeg,*/* Accept-Language:zh-cn Connection:Keep-Alive Host:localhost User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) Accept-Encoding:gzip,deflate username=jinqiao&password=1234 (1)请求方法URI协议/版本 请求的第一行是“方法URL协议版本”: GET/sample.jsp HTTP/1.1 以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。 根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、 PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。 URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可

JSP 页面缓存以及清除缓存

拟墨画扇 提交于 2019-12-20 02:45:11
参考自: https://blog.csdn.net/songylwq/article/details/5586154 首先是对缓存的理解: 1、缓存的思想可以应用在软件分层的各个层面。它是一种内部机制,对外界而言,是不可感知的。 2、数据库本身有缓存,持久层也可以缓存。(比如:hibernate,还分1级和2级缓存) 3、业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存)。 4、表现层/数据服务层(传统web的表现层)也可以设置缓存(jsp cache 就是这一层,实现在app server上的缓存机制) 另外Browser也有缓存(如IE)这个大家也都知道(实现在 web server 上的缓存机制)。越上层的缓存效果越好,越底层的缓存影响越深远。 缓存实现(重) 1、服务端方法: <% response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", -10); %> 2、客户端方法: meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name和http-equiv

开发之缓存与数据库优化

核能气质少年 提交于 2019-12-20 02:09:10
此文仅入门,需要扩展挖深,自行钻研 缓存-redis 数据库-mysql 1. 缓存 什么是缓存? 定义 缓存是系统快速响应的一种关键性技术,是一组被保存起来以备将来使用的东西,介于应用开发和系统开发之间,是产品经理们经常顾及不到的地方,也是技术架构设计的非功能性约束。 分类 按软件系统所处的位置不同分类 客户端缓存 服务端缓存 网络中的缓存 按规模和部署方式分类: 单体缓存 缓存集群 分布式缓存 为什么要用缓存? 为什么要用缓存,我们这里仅从软件开发层面来分析,首先你必须了解关于系统的性能的一些指标。 系统的性能的指标一般包括: 响应时间:系统对用户的请求作出的响应时间,它完整的记录了整个系统处理请求的时间。 延迟时间:一般指系统处理完请求后,由于网络传输到用户之间的网络延迟时间。 吞吐量:指单位时间内系统处理请求的数量。无并发的系统中,它与响应时间成反比。 并发用户数:指系统能够同时承载的正常使用系统功能的用户数量,它比 吞吐量更能直观的反应系统的性能 资源利用率:反映的是一段时间内资源平均被占用的情况 系统的性能,反映在从浏览器到网络,再到服务器,甚至数据库等各个应用层面。而在各个层面使用缓存将大大提升整个系统的性能。 缓存离客户端越近,响应时间则越快;缓存离数据库越近,则响应时间越长。 缓存是一种用空间换时间的概念。 如果带宽收费(流量付费),那么缓存就是变相的省钱利器。

HTTP请求常见错误大全

二次信任 提交于 2019-12-19 23:41:57
常见的Http请求错误提示 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。 100 - 继续 101 - 切换协议 2xx - 成功 这类状态代码表明服务器成功地接受了客户端请求。 200 - 确定。客户端请求已成功 201 - 已创建 202 - 已接受 203 - 非权威性信息 204 - 无内容 205 - 重置内容 206 - 部分内容 3xx - 重定向 客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。 302 - 对象已移动。 304 - 未修改。 307 - 临时重定向。 4xx - 客户端 错误 发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。 400 - 错误的请求 401 - 访问被拒绝 · 401.1 - 登录失败。 · 401.2 - 服务器配置导致登录失败。 · 401.3 - 由于 ACL 对资源的限制而未获得授权。 · 401.4 - 筛选器授权失败。 · 401.5 - ISAPI/CGI 应用程序授权失败。 · 401.7 – 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。 403 - 禁止访问 · 403.1 - 执行访问被禁止。

squid介绍及其简单配置

六月ゝ 毕业季﹏ 提交于 2019-12-19 18:50:01
squid的简单介绍 squid的概念 squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。 squid代理的作用 通过缓存的方式为用户提供Web访问加速 对用户的Web访问进行过滤控制 工作流程 当代理服务器中有客户端需要的数据时: a. 客户端向代理服务器发送数据请求; b. 代理服务器检查自己的数据缓存; c. 代理服务器在缓存中找到了用户想要的数据,取出数据; d. 代理服务器将从缓存中取得的数据返回给客户端。 当代理服务器中没有客户端需要的数据时: 客户端向代理服务器发送数据请求; 代理服务器检查自己的数据缓存; 代理服务器在缓存中没有找到用户想要的数据; 代理服务器向Internet 上的远端服务器发送数据请求; 远端服务器响应,返回相应的数据; 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。 Squid代理服务器工作在TCP/IP应用层 Squid各种代理的定义 正向代理