Web开发

首页 » 常识 » 预防 » 前端最佳实践三Lighthous
TUhjnbcbe - 2023/1/29 15:48:00
刘*连是北京哪个医院皮肤科医生 https://wapjbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/793/

1、避免使用应用缓存

AppCache已被废弃,考虑使用serviceworker的

CacheAPI

、避免使用console.time()

如果您使用console.time()测量页面的性能,请考虑改用

UserTimingAPI

。其优势包括:

高分辨率时间戳。  可导出的计时数据。  与ChromeDevToolsTimeline相集成。在Timeline录制期间调用UserTiming函数performance.measure()时,DevTools自动将此测量结果添加到Timeline的结果中,如以下屏幕截图中的mycustommeasurement标签中所示。

3、避免使用Date.now()

如果使用Date.now()测量时间,请考虑改用performance.now()。performance.now()可提供较高的时间戳分辨率,并始终以恒定的速率增加,它不受系统时钟(可以调整或手动倾斜)的影响。

4、避免使用document.write()

对于网速较慢(如G、3G或较慢的WLAN)的用户,外部脚本通过document.write()动态注入会使页面内容的显示延迟数十秒。

5、避免使用mutationevents

以下突变事件会损害性能,在DOM事件规范中已弃用。

DOMAttrModified  DOMAttributeNameChanged  DOMCharacterDataModified  DOMElementNameChanged  DOMNodeInserted  DOMNodeInsertedIntoDocument  DOMNodeRemoved  DOMNodeRemovedFromDocument  DOMSubtreeModified

建议将每个mutationevents替换成

MutationObserver

6、避免使用旧版CSSFlexbox

年的旧Flexbox规范已弃用,其速度比最新的规范慢.3倍。请参阅

Flexbox布局并不慢

了解更多信息。

7、避免在页面加载时自动请求地理位置

页面在加载时自动请求用户位置会使用户不信任页面或感到困惑。应将此请求与用户的手势(如点按一个“FindStoresNearMe”按钮)进行关联,而不是在页面加载时自动请求用户的位置。

8、避免在页面加载时自动请求通知权限

怎样才算好的通知

中所述,好的通知需要做到及时、相关且精确。如果您的页面在加载时要求权限以发送通知,则这些通知可能与您的用户无关或者不是他们的精准需求。为提高用户体验,最好是向用户发送特定类型的通知,并在他们选择加入后显示权限请求。

9、避免显示宽高比不正确的图像

如果渲染的图像与其源文件中的宽高比不同,则呈现的图像可能看起来失真,产生不好的用户体验。建议:

避免将元素的宽度或高度设置为可变大小的容器的百分比。  避免设置不同于源图像尺寸的显式宽度或高度值。  考虑使用css-aspect-ratio或AspectRatioBoxes来帮助保留宽高比。  如果可能的话,在HTML中指定图片的宽度和高度是一个很好的做法,这样浏览器就可以为图片分配空间,这样可以防止页面在加载时跳过。在HTML中而不是CSS中指定宽度和高度是更好的做法,因为浏览器在解析CSS之前分配空间。实际上,如果您使用响应式图像,则此方法可能很困难,因为在知道视口尺寸之前无法指定宽度和高度。

10、避免使用具有已知安全漏洞的前端JavaScript库

入侵者具有自动的Web爬虫程序,可以对您的站点进行扫描以查找已知的安全漏洞。Web搜寻器检测到漏洞时,会向入侵者发出警报。从那里,入侵者只需要弄清楚如何利用站点上的漏洞。建议:停止使用Lighthouse标志的每个库。如果该库发布了解决该漏洞的较新版本,请升级到该版本,或考虑使用其他库。请参阅

Snyk的漏洞数据库

,以了解有关每个库的漏洞的更多信息。

11、打开外部链接使用rel="noopener"

当您的页面链接至使用target="_blank"的另一个页面时,新页面将与您的页面在同一个进程上运行。如果新页面正在执行开销极大的JavaScript,您的页面性能可能会受影响。此外,target="_blank"也是一个安全漏洞。新的页面可以通过window.opener访问您的窗口对象,并且它可以使用window.opener.location=newURL将您的页面导航至不同的网址。如需了解详细信息,请参阅

rel=noopener的性能优势

。建议:将rel="noopener"添加至Lighthouse在您的报告中识别的每个链接。一般情况下,当您在新窗口或标签中打开一个外部链接时,始终添加rel="noopener"。

ahref="

1
查看完整版本: 前端最佳实践三Lighthous