浏览器缓存

移动端H5活动页优化方案

匿名 (未验证) 提交于 2019-12-02 21:53:52
项目 :移动端H5电商项目 痛点 :慢!!! 初始方案 :最基本的图片懒加载,静态资源放到cdn,predns等等已经都做了。但是还是慢,慢在哪? 显而易见的原因 :由于前后端分离,所有的数据都由接口下发,之后根据模板渲染页面。也就是说,我们需要先加载js,等到js加载完毕之后,请求接口,接口返回数据之后,渲染页面,加载图片等等。尽管使用了模块化的加载方式,但是对于要求高的首页和活动页,给用户的感知也不是很好。 最初,由于时间紧迫,基本上都是从客户端作优化处理,基本上可以总结为以下几个方面。 我们做了本地缓存优化的策略,第一次请求之后就把接口数据缓存到localStorage里面,并且存储当时的时间,设定过期时间,一般设置为5分钟,用户在5分钟内重复打开页面,不会再次请求接口,从localstorage中拿取数据,直接渲染页面。 后续干脆把模板渲染好的html片段存储了起来,直接拼接,省去了模板计算的时间。 基本实现方案如下: var cache = localStorage.getItem('cache') , expires = 5 * 60 * 1000 ; // 判断是否过期 function isOverdue(pastTime, expires) { return Date.now() - pasttime >= expires; } if (cache &&

记一次大厂的面试过程

匿名 (未验证) 提交于 2019-12-02 21:53:52
2019年6月中旬,实在厌倦了之前平平淡淡的工作和毫不起眼的薪资,不顾亲人的反对,毅然决然地决定只身前往沿海城市,想着找到一份更加具有挑战性的工作,来彻彻底底地重新打磨自己,同时去追求更好的薪资待遇。当然在此之前,自己每天下班后都会利用业余时间抓紧复习巩固刷题等等,大概从3月份开始的吧,持续了3个多月。而后从6月中旬面试一直到6月底,中间大概两个星期,其实我的学历和背景并不突出,但是我个人感觉可能是因为自己简历做的稍微还行( 后面我可能会单独出一篇文章,来聊聊我做简历时的一点点心得 ),让大厂的HR能够多看几眼,中间面过的公司包括 喜马拉雅、携程、哔哩哔哩、流利说、蜻蜓FM、爱回收 等,陆陆续续拿到4,5个Offer吧,如今已经转正,所以在这里记录下之前的部分面试题,和大家一起分享交流。 这家公司其实我也没有太了解过,是我前同事推荐的,说里面的薪资待遇不错,然后我当时也有空闲时间,所以就去试试了,虽然公司名气没有上面提到的公司大,但是他的面试题我觉得还是挺有分量的。 async function async1() { console.log(1); const result = await async2(); console.log(3); } async function async2() { console.log(2); } Promise.resolve().then(()

HTTP协议详解

試著忘記壹切 提交于 2019-12-02 21:49:13
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 一、HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议

缓存的优缺点

自古美人都是妖i 提交于 2019-12-02 21:16:52
转:https://www.cnblogs.com/bethunebtj/p/9159914.html 1.为何需要缓存? 在高并发请求时,为何我们频繁提到缓存技术?最直接的原因是,目前磁盘IO和网络IO相对于内存IO的成百上千倍的性能劣势。 做个简单计算,如果我们需要某个数据,该数据从数据库磁盘读出来需要0.1s,从交换机传过来需要0.05s,那么每个请求完成最少0.15s(当然,事实上磁盘和网络IO也没有这么慢,这里只是举例),该数据库服务器每秒只能响应67个请求;而如果该数据存在于本机内存里,读出来只需要10us,那么每秒钟能够响应100,000个请求。 通过将高频使用的数据存在离cpu更近的位置,以减少数据传输时间,从而提高处理效率,这就是缓存的意义。 2.在哪里用缓存? 一切地方。例如: 我们从硬盘读数据的时候,其实操作系统还额外把附近的数据都读到了内存里 例如,CPU在从内存里读数据的时候,也额外读了许多数据到各级cache里 各个输入输出之间用buffer保存一批数据统一发送和接受,而不是一个byte一个byte的处理 上面这是系统层面,在软件系统设计层面,很多地方也用了缓存: 浏览器会缓存页面的元素,这样在重复访问网页时,就避开了要从互联网上下载数据(例如大图片) web服务会把静态的东西提前部署在CDN上,这也是一种缓存 数据库会缓存查询

Redis缓存解决方案

别等时光非礼了梦想. 提交于 2019-12-02 19:31:37
简介( https://letsencrypt.org ) letsencrypt是一个免费ssl提供商。证书有效期3个月,每3个月需要renew证书一次。下面的教程介绍了如何安装配置证书,及如何通过cron自动renew证书. 安装CertBot( https://certbot.eff.org/ ) 命令行,键入: $ sudo yum install epel-release $ wget https://dl.eff.org/certbot-auto $ chmod a+x certbot-auto $ cp certbot-auto /usr/bin/certbot-auto 配置Nginx 这里我不想使用CertBot的standalone模式,这个模式虽然可以配置好服务器,但是以后Renew的时候,需要让服务停止一下,再启动。因此抛弃这个模式,我们使用Webroot配置模式。 因为,CertBot在验证服务器域名的时候,会生成一个随机文件,然后CertBot的服务器会通过HTTP访问你的这个文件,因此要确保你的Nginx配置好,以便可以访问到这个文件。 修改你的服务器配置,在server模块添加: location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share

SSH框架面试题集锦

為{幸葍}努か 提交于 2019-12-02 18:17:41
Hibernate工作原理及为什么要使用Hibernate? 工作原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要使用Hibernate(即它的优点): 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2, Hibernate中get和load方法的区别 hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常; hibernate对于get方法,hibernate一定要获取到真实的数据,否则返回null。 具体介绍: 1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库

高并发web网站架构设计

谁说我不能喝 提交于 2019-12-02 17:55:31
千万级 PV 规模高性能高并发网站架构 高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在 800 里地以外,即不能让他们的 请求一下打到我们的指挥部(指挥部就是数据库及分布式存储)。 如:能缓存在用户电脑本地的,就不要让他去访问 CDN/cache。能缓存 CDN/cache 服务器上 的,就不要让 CDN/cache 去访问源(静态 web 服务器)了。能访问静态 web 服务器的,就 不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。 高性能高并发高可扩展网站架构访问的几个层次: 第一层: 首先在用户浏览器端,使用 Apache 的 mod_deflate 压缩传输,再比如: expires 功 能,deflate 和 expires 功能利用的好,就会大大提升用户体验效果及减少网站带宽,减少后端 服务器的压力。 提示:有关压缩传输及 expires 功能 nginx/lighttpd 等软件同样也有。 第二层: 静态页面内容缓存,如图片/js/css 等或静态数据 html,这个层面是网页缓存层,比 如 CDN(效果比公司自己部署 squid/nginx/varnish 要好,他们更专业,价格低廉,比如快网 /CC 等,而且覆盖的城市节点更多)。 自己架设 squid

缓存(二)

安稳与你 提交于 2019-12-02 15:40:34
一.缓存的概念 1. Buffer,Cache的区别: buffer: 一般用于写操作,写缓冲。 cache: 一般用于读操作,读缓存。 它们都是解决速度不一致的问题,都设计到IO操作。 2.Cache的重点关注点: 1.存放位置(多级cache): 客户端(浏览器缓存) 内存(本地或者远程服务器) 硬盘(本地或者远程服务器) 2.过期时间: TTL 3.强制失效 4.Cache的命中率(重点): 一个完全没有命中率的cache没有意义。 二.浏览器缓存 1.缓存协商的定义: 浏览器和web服务器进行缓存的对话。 2.浏览器缓存的几种方式: Last-Modified: 文件最后修改时间 Etag: MD5 Expires: 过期时间 Nginx设置方法: location ~ .*\.(js|css){ expires 1h; #1小时过期 } (如果在过期前发现js错了,需要改名或者加时间123.js变成123.js?201610) Cache-Control: 解决客户端时间不对的问题 3.浏览器几种刷新方式的区别: 在地址栏敲击Enter键: 只要没有过期的直接使用缓存,所有缓存机制都生效。 F5或者刷新按钮: Expires不受影响,其他缓存机制都失效。 Ctrl+F5: 强制刷新,所有缓存机制都失效,相当于第一次访问网页。 二.CDN相关 1.CDN主要解决以下问题:

meta标签

为君一笑 提交于 2019-12-02 15:09:55
原文: https://www.imooc.com/qadetail/330325 一、http-equiv属性 http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。 meta标签的http-equiv属性语法格式是: <metahttp-equiv="参数"content="参数变量值">; 其中http-equiv属性主要有以下几种参数: A、Expires(期限) 说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新传输。 用法:<metahttp-equiv="expires"content="Fri,12Jan200118:18:18GMT"> 注意:必须使用GMT的时间格式。 B、Pragma(cache模式) 说明:禁止浏览器从本地计算机的缓存中访问页面内容。 用法:<metahttp-equiv="Pragma"content="no-cache"> 注意:这样设定,访问者将无法脱机浏览。 C、Refresh(刷新) 说明:自动刷新并指向新页面。 用法:<metahttp-equiv="Refresh"content="2;URL=http://www.jb51.net">(注意后面的引号

HTTP详解

半世苍凉 提交于 2019-12-02 14:51:30
一 、基础概念 URI 请求和响应报文 二、HTTP 方法 GET HEAD POST PUT PATCH DELETE OPTIONS CONNECT TRACE 三、HTTP 状态码 1XX 信息 2XX 成功 3XX 重定向 4XX 客户端错误 5XX 服务器错误 四、HTTP 首部 通用首部字段 请求首部字段 响应首部字段 实体首部字段 五、具体应用 连接管理 Cookie 缓存 内容协商 内容编码 范围请求 分块传输编码 多部分对象集合 虚拟主机 通信数据转发 六、HTTPS 加密 认证 完整性保护 HTTPS 的缺点 七、HTTP/2.0 HTTP/1.x 缺陷 二进制分帧层 服务端推送 首部压缩 八、HTTP/1.1 新特性 九、GET 和 POST 比较 作用 参数 安全 幂等性 可缓存 XMLHttpRequest 参考资料 一 、基础概念 URI URI 包含 URL 和 URN。 请求和响应报文 1. 请求报文 2. 响应报文 二、HTTP 方法 客户端发送的 请求报文 第一行为请求行,包含了方法字段。 GET 获取资源 当前网络请求中,绝大部分使用的是 GET 方法。 HEAD 获取报文首部 和 GET 方法类似,但是不返回报文实体主体部分。 主要用于确认 URL 的有效性以及资源更新的日期时间等。 POST 传输实体主体 POST 主要用来传输数据,而