JS里面的内存泄露和浏览器缓存

一、内存泄漏定义:

       程序认为一个变量没有用了,而垃圾回收机制认为它还在使用,从而导致内存无法释放。

注意:JS在定义一个变量,就已经分配好了内存,同时也提供了垃圾回收机制,回收那些不再使用的内存。

场景一:使用全局变量(实际开发需要避免使用全局变量)

场景二:使用console.log(生产环境去除调试使用的console.log)

场景三:不恰当的使用闭包 (比如使用全局变量接受闭包数据,但一直不被执行,也没有手动释放内存)

场景四:DOM泄漏

二、浏览器缓存:

浏览器缓存是一种性能优化技术,通过已请求的资源(如html、css、js、图片等)缓存在本地,以减少网络请求和数据传输。当用户再次访问相同资源时,浏览器可以直接从缓存中获取,从而加快页面加载速度、降低服务器压力和减少网络流量消耗。

浏览器缓存分为以下两种:

1、强缓存:(status-code为200,表示属于强缓存,强缓存可以存在memory cache和disk cache)强缓存是指浏览器在缓存期间内不会再向服务器发送任何请求,而是直接从本地缓存中获取资源。强缓存由以下两个http响应头控制:

expires:指定资源的过期时间。但是服务器和客户端可能存在差异,所以这个响应头不太准确。

cache-control:更现代且准确的方式。例如chache-control:max-age=3600,表示资源的缓存有效期为3600.

2、协商缓存:(返回304,表示协商缓存,目前只看到memory cache,没有看到disk cache)当协商缓存失效,浏览器向服务器发送请求,以验证资源是否更新。协商缓存通过http响应头和请求头控制:

etag和if-none-match:Etag是服务器为资源生成的唯一标识(通常是哈希值),浏览器下次请求通过if-none-match请求头发送标识。服务器比较这个标识和资源当前的etag,如果相同,则返回304dnot modified状态码,否则返回更新的资源和新的etag。

       

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值