浏览器缓存

前端需要了解的http知识

旧巷老猫 提交于 2020-02-02 04:02:22
http基本概念 http是一个无状态 ,无连接的基于TCP协议的单向应用层协议 一、无连接 无连接即每次链接只处理一个请求,请求和应答后就断开链接 二、无状态 http的每次请求都是独立的,不相关的,协议对事物处理没有记忆功能。 HTTP无状态的特性严重阻碍了这些交互式应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。 HTTP请求报文 HTTP请求报文由3部分组成(报文行+报文头+报文体): 常见的HTTP响应报文头属性 Cache-Control 响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 常见的取值有private、public、no-cache、max-age,no-store,默认为private。 private: 客户端可以缓存 public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的) max-age=xxx: 缓存的内容将在 xxx 秒后失效 no-cache: 需要使用对比缓存来验证缓存数据 no-store: 所有内容都不会缓存 默认为private,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据

session放入缓存(redis)、DB

情到浓时终转凉″ 提交于 2020-02-02 03:22:40
为什么要把SESSION保存在缓存   就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_save_path()进行设置,但是这么做有弊端, 第一就是保存到文件系统中,效率低,只要有用到session就会从好多个文件中查找指定的sessionid,效率很低。 第二就是当用到多台服务器的时候可能会出现,session丢失问题(其实是保存在了其他服务器上)。   当然了,保存在缓存中可以解决上面的问题,如果使用php本身的session函数,可以使用session_set_save_handler()函数很方便的对session的处理过程进行重新控制。如果不用php的session系列函数,可以自己编写个类似的session函数,也是可以的,我现在做的这个项目就是这样,会根据用户的mid、登录时间进行求hash作为sessionId,每次请求的时候都必须加上sessionId才算合法(第一次登录的时候是不需要的,这个时候会创建sessionId,返回给客户端),这么做也很方便、简洁高效的。当然了,我这篇文章主要说的是在php自身的SESSION中”做做手脚”。 SESSION保存在缓存中   php将缓存保存到redis中,可以使用配置文件,对session的处理和保存做修改

HTTP请求方法GET和POST

北战南征 提交于 2020-01-31 09:24:36
HTTP请求方法GET和POST的区别,出现在面试题目中,网上也有很多总结。但是多看看RFC2616和RFC7321就发现那些总结有些问题。 一般理解 下面是普遍的理解,来自 w3school 的整理 GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 GET书签可收藏,POST为书签不可收藏。 GET能被缓存,POST不能缓存 。 GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。 GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。 GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在

kali Linux 渗透测试 | ARP 欺骗

[亡魂溺海] 提交于 2020-01-31 04:50:33
目录 ARP 欺骗及其原理 ARP 欺骗实施步骤 必备工具安装 nmap 工具 dsniff 工具 driftnet 工具 ettercap 工具 ARP 欺骗测试 ARP 断网攻击 ARP 欺骗(不断网) 抓取图片 获取账号与密码 arp 缓存表对照 ARP协议: 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含 目标IP地址 的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 ARP欺骗: 地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。 实验原理 ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址

一次HTTP请求中的缓存

ε祈祈猫儿з 提交于 2020-01-31 02:12:02
一个HTTP Request从用户点击的一瞬间,到服务器返回请求,一般会经过以下类型的缓存 (按照由客户端到服务器端的顺序) 1.浏览器端存储: HTML5中的本地存储功能允许在浏览器端保存数据. Flash等第三方插件也有类似的功能. JavaScript保存一些数据在当前Context也算这种类型. 2.浏览器端文件缓存 HTTP协议中在时间未过期等情况下,不请求服务器数据而直接使用本地的文件 (请参考HTTP协议中关于缓存控制的部分) 常用于html JavaScript css等文件的缓存,以减少请求次数 3.HTTP缓存304: HTTP协议中,如果服务器文件未发生变化,不返回用户请求的数据,而只是返回一个304响应 (更多内容请参考HTTP协议) 不减少请求数量,但是减少了响应的体积 通过控制动态文件的输出内容实现缓存(可以了解一下 Etag 等相关内容) 4.服务器端文件类型缓存 动态页面静态化为html文件; 代理服务器, CDN等.. 某些不常更新的的数据静态化为文件 主要是为了节省服务器资源,例如CPU 5.普通内存缓存: 这是我们平时用的最多的缓存 功能很强,例如.net中的Cache类按照时间等规则定时过期数据,例如缓存数据库数据 6.分布式缓存 例如Memcached,现代应用程序的规模越来越大,难免用上此类方案 经常通过自己分割程序实现分布式的缓存 7

06.django升级打怪学习记

雨燕双飞 提交于 2020-01-30 23:28:23
缓存 *提升服务响应速度 *将执行过的操作数据存储下来,再一定时间内,再次获取数据的时候,直接从缓存中获取 *比较理想的方案,缓存使用内存级缓存 *Django内置缓存 例子: 缓存底层 获取cache 缓存操作 缓存原理 a.没有缓存 b.有缓存第一次 c.有缓存不是第一次 中间件 中间件切点: AOP 中间件: 实现统计功能 *统计IP *统计浏览器 实现权重控制 *黑名单 *白名单 实现反爬 *反爬虫 *实现频率控制 界面友好化 应用交互友好化 中间件 *调用顺序 ——中间件注册的时候是一个列表 ——如果我们没有在切点出直接进行返回,中间件会一次执行 ——如果我们直接进行了返回,后续中间键就不再执行了 *切点(proecess_request/process_view/process_template_response/process_response/rpocess_exeption) *切面 homework *分页 分页超过10哥的时候,中间的页面使用...代码 显示的时候只显示前五页和后五页 --------------------------------------------------------------------- 来源: https://www.cnblogs.com/aixiaoxiaoyu/p/12244173.html

浏览器缓存知识小结及应用

谁说胖子不能爱 提交于 2020-01-30 16:37:04
浏览器缓存,也就是客户端缓存,既是网页性能优化里面静态资源相关优化的一大利器,也是无数web开发人员在工作过程不可避免的一大问题,所以在产品开发的时候我们总是想办法避免缓存产生,而在产品发布之时又在想策略管理缓存提升网页的访问速度。了解浏览器的缓存命中原理,是开发web应用的基础,本文着眼于此,学习浏览器缓存的相关知识,总结缓存避免和缓存管理的方法,结合具体的场景说明缓存的相关问题。希望能对有需要的人有所帮助。 1 浏览器缓存基本认识 它分为强缓存和协商缓存: 1.1 浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器; 1.2 当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源; 1.3 强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据

http内容协商

这一生的挚爱 提交于 2020-01-30 16:33:55
概览 对于特定的URL来说,服务器可以根据一些原则来决定发送什么内容给客户端最合适。在有些场合下,服务器甚至可以自动生成定制的页面。比如,服务器可以为手持设备把HTML页面转换成WML页面。这类动态内容变换被称为转码。这些变换动作是HTTP客户端和服务器之间进行内容协商的结果   共有3种不同的方法可以决定服务器上哪个页面最适合客户端:让客户端来选择、服务器自动判定,或让中间代理来选。这3种技术分别称为客户端驱动的协商、服务器驱动的协商以及透明协商 1 客户端驱动 对于服务器来说,收到客户端请求时只是发回响应,在其中列出可用的页面,让客户端决定要看哪个,这是最容易的事情。很显然,这是服务器最容易实现的方式,而且客户端很可能选择到最佳的版本(只要列表中有让客户端选择的足够信息)。不利之处是每个页面都需要两次请求:第一次获取列表,第二次获取选择的副本。这种技术速度很慢且过程枯燥乏味,让用户厌烦   从实现原理上来说,服务器实际上有两种方法为客户端提供选项:一是发送回一个HTML文档,里面有到该页面的各种版本的链接和每个版本的描述信息,另一种方法是发送回HTTP/1.1响应时,使用300 Multiple Choices响应代码。客户端浏览器收到这种响应时,在前一种情况下,会显示一个带有链接的页面,在后一种情况下,可能会弹出对话窗口,让用户做选择。不管怎么样

前端必备工具类

守給你的承諾、 提交于 2020-01-30 09:58:30
Http请求工具 注意,大部分情况下,我们后端返回的数据格式都是类似 { "code" : 0 , "data" : { } , "msg" : "" } 所以我们在请求工具中可以统一检查 code,如果返回正确则只返回 data 中的数据 import axios from 'axios' ; // 创建axios实例 var instance = axios . create ( { timeout : 120000 , headers : { 'X-Requested-With' : 'XMLHttpRequest' } } ) ; axios . defaults . withCredentials = true ; // 添加响应拦截器 axios . interceptors . response . use ( function ( response ) { return response ; } , function ( error ) { // todo 这里可以统一拦截非200状态响应 return Promise . reject ( error ) ; } ) ; /** * 发送 GET 请求,当 code 的值等于期望的值时解析 response.data.data * * 否则拒绝,并传递 data.message 或 data.msg * *

什么是CDN

江枫思渺然 提交于 2020-01-29 11:38:35
什么是CDN? CDN加速意思就是在用户和我们的服务器之间加一个缓存机制,通过这个缓存机制动态获取IP地址根据地理位置,让用户到最近的服务器访问。 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起。那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火车,火车票都要去市里的火车站购买,而从县城到市里,来回就是4个小时车程,简直就是浪费生命。后来就好了,小县城里出现了火车票代售点,可以直接在代售点购买火车,方便了不少,全市人民再也不用在一个点苦逼的排队买票了。 CDN就可以理解为分布在每个县城的火车票代售点,用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器(假设源站部署在北京电信机房)上了。 那么CDN是个啥? 全称Content Delivery Network即内容分发网络。 CDN是一组分布在多个不同的地理位置的WEB服务器,用于更加有效的向用户发布内容,在优化性能时,会根据距离的远近来选择 。 CDN系统能实时的根据网络流量和各节点的连接,负载状况及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,其目的是使用户能就近的获取请求数据,解决网络拥堵,提高访问速度,解决由于网络带宽小