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

如何解决前端开发中的缓存问题,第1张

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

HTTP1.0中通过Pragma控制页面缓存,可以设置:Pragma或no-cache。网上有非常多的文章说明如何控制不让浏览器或中间缓存服务器缓存页面,通常设置的值为no-cache,不过这个值不这么保险,通常还加上Expires置为0来达到目的。但是如我们刻意需要浏览器或缓存服务器缓存住我们的页面这个值则要设置为Pragma。

HTTP1.1中启用Cache-Control来控制页面的缓存与否,这里介绍几个常用的参数:

no-cache,浏览器和缓存服务器都不应该缓存页面信息;

public,浏览器和缓存服务器都可以缓存页面信息;

no-store,请求和响应的信息都不应该被存储在对方的磁盘系统中;

must-revalidate,对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时;

Last-Modified只页面的最后生成时间,GMT格式;

Expires过时期限值,GMT格式,指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息;

上面两个值在JSP中设置值为字符型的GMT格式,无法生效,设置long类型。

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

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

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

与浏览器缓存有关的头部有:

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

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11344527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存