当前位置:首页 » 网页前端 » 前端数据缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端数据缓存

发布时间: 2023-07-24 03:02:25

㈠ web编程开发都有哪些前端缓存

缓存问题在web前端编程开发领域中是一个非常重要的技术问题,下面我们就一起来了解一下,关于web缓存我们都需要了解哪些知识。


缓存优点

通常所说的Web缓存指慧世的是可以自动保存常见http请求副本的http设备。对于前端开发者来说,浏览器充当了重要角色。除此外常见的还有各种各样的代理服务器也可以做缓存。当Web请求到达缓存时,缓存从本地副本中提取这个副本内容而不需要经过服务器。这带来了以下优点:

缓存减少了冗余的数据传输,节省流量

缓存缓解了带宽瓶颈问题。不需要更多的带宽就能更快加载页面

缓存缓解了瞬间拥塞,降低了对原始服务器的要求。

缓存降低了距离延时,因为从较远的地方加载页面会更慢一些。

缓存种类

缓存可以是单个用户专用的,也可以是多个用户共享的。专用缓存被称为私有缓存,共享的缓存被称为公有缓存。

私有缓存

私有缓存只针对专有用户,所以不需要很大空间,廉价。Web浏览器中有内建的私有缓存——大多数浏览器都会将常用资源缓存在你的个人电脑的磁盘和内存中。

公有缓存

公有缓存是特殊的共享代理服务器,被称为缓存代理服务器或代理缓存(反向代理的一种用途)。公有缓存会接受来自多个用户的访问,所以通过它能够更好的减少冗余流量。

新竖猛鲜余碧桥度限值

HTTP通过缓存将服务器资源的副本保留一段时间,这段时间称为新鲜度限值。这在一段时间内请求相同资源不会再通过服务器。HTTP协议中Cache-Control和Expires可以用来设置新鲜度的限值,前者是HTTP1.1中新增的响应头,后者是HTTP1.0中的响应头。电脑培训发现二者所做的事时都是相同的,但由于Cache-Control使用的是相对时间,而Expires可能存在客户端与服务器端时间不一样的问题,所以我们更倾向于选择Cache-Control。


㈡ 前端数据存储方式有哪些

为你总结了四种数据存储方式,希望可以帮到你:

1、Cookie

cookie 用于存储web页面的用户信息。

cookie 是一些数据,存储在你电脑上的文本文件中。当web服务器向浏览器发送web页面时,在连接关闭后,服务端不会记录用户的信息。Cookie的作用就是用于解决如何记录客户端的用户信息。

2、localStorage

  • 允许在浏览器中存储key/value对的数据。

  • 用于长期保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。

  • 属性是只读的。

  • 如果你想浏览器窗口关闭后还保留数据,可以使用localStorage;如果你只想将数据保存在当前会话中,可以使用sessionStorage.

3、sessionStorage

  • 允许在浏览器中存储key/value对的数据。

  • 数据对象临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后也将删除这些数据。

4、indexedDB

索引数据库(indexDB)API(作为HTML5 的一部分)对创建具有吩咐本地存储数据的数据密集型的离线HTML5 Web 应用程序很有用。

同时它还有助于本地缓存数据,使传统再现Web应用程序(比如移动 Web 应用程序)能够更快的运行和响应。

想要了解或者学习更多前端知识,推荐北京尚学堂,雄厚的师资力量带给你高效的学习体验。

㈢ web前端缓存机制

前端缓存机制有多种,如浏览器缓存、CDN缓存、DNS缓存、代理服务器缓存等。

CDN全称是Content Delivery Network,即内容分发网络。CDN的原理是将资源存放在各地的缓存服务器上,当用户请求资源时,从就近的服务器上返回缓存的资源,而不需要每次都从源服务器获取,减轻源服务器的压力,又能提升用户的访问速度。

浏览器可以将用户请求的资源进行缓存,存放在本地。浏览器缓存一般通过请求头来设置。
与浏览器缓存有关的头部有:

浏览器会将服务器的域名与IP地址的映射缓存在本地,这样用户在访问网站时,不用每次都去查询DNS映射表。

在浏览器和服务器之间架设的一个服务器 ,这个代理服务器会帮助浏览器去请求页面,然后将页面进行处理和压缩(例如压缩图片和文件),使页面变小,再传输给浏览器。大部分代理服务器都有缓存的功能,如果浏览器所请求的文件在它本机中存在且是最新的,就不需要再从源服务器请求数据,提高了浏览速度。

在浏览某个页面时,浏览器会判断页面的关联内容,进行预加载。用户在浏览A页面时,就加载好B页面,这样当用户去访问B页面时,B页面很快就出来,提升了用户体验。但这个机制有一定的缺陷,就是预判不一定准确,可能会造成流量和资源的浪费。

㈣ 前端数据多谷歌浏览器卡

内存不足,谷歌打开窗口太多、单个页面卡死或长时间没清理浏览器缓存。
调出“清除浏览数据”的对话框,选中“清空缓存”,开谷歌浏览器的任务管理器,关闭卡顿的标签页(进程)。
谷歌公司成立于1998年9月4日,由拉里·佩奇和谢尔盖·布林共同创建,被公认为全球最大的搜索引擎公司。谷歌是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、广告技术等,同时开发并提供大量基于互联网的产品与服务。

㈤ 前端浏览器缓存机制

在前端开发中,性能是一个永恒的话题,没有最好,只有更好。判断一个网站性能好坏,一个直入眼观的即是网页的反应速度,有一个方式就是使用缓存,一个优秀的缓存策略可以缩短网页请求的时间,减少延迟,并且网页可以重复利用,还可以减少带宽,降低网络负荷。

1: 为什么需要缓存?

a:缓存可以减少用户等待时间,提升用户体验

b:减少网络带宽消耗

c:降低服务器压力

Note:缓存使用不当,也会造成‘脏数据’问题

2:常见的缓存类型

强缓存 -

Expires服务器端设置,表示该资源的过期时间,会有弊端,客户端时间和服务器时间不一致的问题。

Cache-Control:max-age表示缓存资源的最大生命周期,单位是秒

所以Expires 结合 Cache-Control 一起使用,大型网站中一般比较适用

协商缓存-

Last-Modified:值为资源的最后更新时间,随服务器response返回

If-Modified-Since:通过比较两个时间来判断资源在两次请求期间是否有过修改,如果没有,则命中协商缓存

Etag:表示资源内容的唯一标识,即资源的消息摘要

If-None-Match:服务器通过比较请求头中的If-None-Match与当前资源的Etag是否一致来判断资源是否在两次请求期间有过修改

3:缓存流程图示:

a:浏览器会先检测强缓存类型(Cache-Control 或者 Expires)是否有效;命中直接浏览器本地获取缓存资源

b:未命中。服务器会根据请求头Request Header验证这个资源是否命中协商缓存,称之为HTTP二次验证,命中,服务器返回请求,但返回资源,而是告诉客户端直接中直接从浏览器缓存中获取

Note:

1.强缓存不会发生请求,协商缓存存在服务器请求

2.当协商缓存也未命中时,则服务器会将资源发送到客户端

3.F5刷新页面,会跳过强缓存

4.Ctrl+F5刷新页面,跳过强缓存和协商缓存

5.不会缓存的情况

HTTPS POST请求 根据Cookie获取认证信息 Request Header Cache-Control:no-cache, max-age=0

6.小故事大道理

上文对整个概念做了阐述,还是不够形象,我们来通过几个小故事生动理解一下:

故事一:Last-Modified

浏览器:Hi,我需要 jartto.min.js 这个文件,如果是在 Last-Modified: Fri Feb 15 2019 19:57:31 GMT 之后修改过的,请发给我。

服务器:(检查文件的修改时间)

服务器:Oh,这个文件在那个时间之后没有被修改过,你已经有最新的版本了。

浏览器:太好了,那我就显示给用户了。

故事二:ETag

浏览器:Hi,我需要 jartto.css 这个文件,有没有不匹配 3c61f-1c1-2aecb436 这个串的

服务器:(检查 ETag…)

服务器:Hey,我这里的版本也是 3c61f-1c1-2aecb436,你已经是最新的版本了

浏览器:好,那就可以使用本地缓存了

㈥ 前端SPA应用缓存问题解决与实践

要解决问题,有先决的理论知识先要了解

分两种:

这种机制下,浏览器会先找本地缓存,命中则不会从服务器请求,并返回200状态码,且附有 disk cache 或者 memory cache 字样

这种机制,强缓存失效后,浏览器物培会携带缓存标识向服务器发起请求,服务器根据标识决定是否使用缓存

首先一点,就是 “浏览器会携带缓存标识” ,这个标识是什么,有两种

好,原理讲了,现在凡是用到nginx的罩宽唯,基本上自动都会实现了ETag和Last-Modified,也就是说,这部分实现机制,已经是默认的!不需要你另加处理。

好,问题来了,如何处理前端SPA应用的缓存问题呢?

现在的SPA要么Vue要么React要么Angular

默认情况下,我们会看到:

即所有资源第一次进,强缓存,第二次进,无意外情况下,会执行协商缓存。

之所以会出现SPA缓存问题,在于index.html是304,那么客户端读取到的,有可能是本地的Not Modified,那么继续下去,读的依旧是本地的disk cache

如何解决问题呢?

这里有个特性,SPA通过webpack打包,一般默认会带有contenthash值,即当对应文件有改动,这个contenthash值才会改变,进而改变打包出来巧贺的文件名,意味着 只有改变了的文件,文件名才会变,没有改变的文件是不会变的

如果需要对特殊的文件特殊处理,比如文字类型的文件设置更大的缓存时间或者别的,可以参考上述语法单独加映射

修改后, service nginx reload 一下,浏览器可以看到差别:

index.html一直是200,且从服务器直接读取,而所有其他的静态文件,均从memory or disk cache读取

好,那么接下来如果有更新,可以想象,变化的文件有

而由于index.html一直是请求服务器的,那么得到的入口js也必然是最新的,意味着如果没改动的,走本地强缓存,有改动的,会请求最新的,之后请求会走本地强缓存。

Problem solved.

解决前端SPA缓存问题:

㈦ 前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于 缓存文件可以重复利用 ,还可以减少带宽,降低网络负荷。

        对于一个数据请求来说,可以分为发起 网络请求、后端处理、浏览器响应 三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。

①不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求

②存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存

③存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果

控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Control优先级比Expires高。

Cache-Control、Expires都是缓存到期时间,Cache-Control是相对值,Expires是绝对值,即再次发送请求时,如果时间没到期,强制缓存生效。

注:在无法确定客户端的时间是否与服务端的时间同步的情况下,Cache-Control相比于expires是更好的选择,所以同时存在时,只有Cache-Control生效。

①协商缓存生效,返回304

②协商缓存失效,返回200和请求结果

这里我们以博客的请求为例,状态码为灰色的请求则代表使用了强制缓存,请求对应的Size值则代表该缓存存放的位置,分别为from memory cache 和 from disk cache。那么from memory cache 和 from disk cache又分别代表的是什么呢?什么时候会使用from disk cache,什么时候会使用from memory cache呢?

from memory cache代表使用 内存中的缓存 ,from disk cache则代表使用的是 硬盘中的缓存 ,

㈧ 能用JS或者前端的什么方法实现清除浏览器缓存吗

可以用JS实现清除浏览器缓存,解决方法如下:

1、在静态页面也就是以.html,.jsp,.aspx,.php结尾的文件中在<dead></head>中加入以下代码。


注意事项:

JavaScriptJavaScript基于对象和事件驱动并具有相对安全性的客户端脚本语言。也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

㈨ 如何解决前端开发中的缓存问题

function loadFile(arr) {
let now = new Date();
let timestamp = "?t=" + now.getTime();
let head = document.getElementsByTagName("head")[0];

}
$(function(){
var js_arr=["alert.js","alert.css"];
loadFile(js_arr);
});现在的大多数浏览器都有缓存机制,目的是减少客户端的访问次数,减轻服务器的压力。但是在开发工程中或者是版本更新过程中,缓存机制的存在会使得程序版本已经更新,但是效果不能出现的状况,需要开发人员频繁的清除缓存,并不友好,特此总结以下几种方式(以谷歌为例),仅供参考,如有雷同,不甚荣幸。

1.对于开发者来说,只需要关闭浏览器缓存就可以了。步骤是:浏览器右键打开检查,找到network,下边有Disable cache选项,只要将其打勾即可

2.开发者可以关闭缓存,但是并不能要求所有用户都进行此类操作,此时可以在引用的文件之后拼接随机数或者日期都可以,浏览器就会认为是新的请求,而不会使用缓存中的文件,具体如下(只演示大概思路,具体使用,具体修改):