复习篇-详解浏览器事件捕获、冒泡、强缓存、协商缓存

复习篇-详解浏览器事件捕获、冒泡、强缓存、协商缓存
最新回答
心病沒药医

2021-06-09 02:34:08

浏览器事件处理机制主要包括捕获、目标和冒泡三个阶段。事件处理函数可以通过第三个参数来指定在捕获阶段(true)还是冒泡阶段(false或不填)执行。然而,IE浏览器特有的是只支持冒泡模式,不支持事件捕获和addEventListener,而是通过attachEvent函数进行事件绑定。

在事件处理中,阻止事件的传播可以通过e.stopPropagation(),这会阻止事件从当前元素向上或向下继续传播。而stopImmediatePropagation()则更进一步,即使事件仍在事件链中,也会立即停止后续监听器的执行。

默认行为的阻止通常通过e.preventDefault()实现,如点击表单提交按钮时,可以通过它来阻止表单的自动提交。事件委托是常见的性能优化策略,例如在UI中,通过绑定到父元素(如ul)上,处理所有li的事件,避免为每个li单独绑定。

关于缓存,浏览器的缓存分为强缓存和协商缓存。强缓存由服务端控制,通过response header的cache-control设置,客户端在有效期内直接从缓存获取资源,直到资源过期。协商缓存则涉及客户端与服务器的交互,通过etag和last-modified判断资源是否更新,如果未变,服务器返回304状态码,客户端使用本地缓存,否则返回200状态码并更新缓存信息。

设置协商缓存时,需要在response header中设置etag和last-modified,客户端下次请求时会携带这些标识。etag和last-modified的重要性在于解决last-modified在某些情况下可能遇到的问题,如服务器时间与客户端时间不同步等情况。