We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第177天 你有使用过preload、preconnect、prefetch这些属性吗?说说它们都有什么作用?
The text was updated successfully, but these errors were encountered:
Preload: 当我们在 link 标签中使用 preload 时,它会提前请求资源。主要用于获取当前路由中使用的高优先级资源。
Preconnect: 解决 DNS 和 TCP 握手问题
Prefetch: 提前获取资源将其置于缓存中,使用资源时从缓存中获取而不是发出另一个请求。
参考链接
Sorry, something went wrong.
<!-- Prefetch DNS for external assets --> <link rel="dns-prefetch" href="//fonts.googleapis.com"> <link rel="dns-prefetch" href="//www.google-analytics.com"> <link rel="dns-prefetch" href="//opensource.keycdn.com"> <link rel="dns-prefetch" href="//cdn.domain.com">
<link rel="prerender" href="https://www.keycdn.com">
preload
如上所示,我们使用这样的语法: rel="preolad"声明这是一个preload href指明资源的位置 as指明资源类型(这是为了让浏览器精确设置优先级,设置正确的CSP、Accept头部) crossorigin 指明使用的跨域设置 preload和onload事件 添加preload声明之后,浏览器初次加载的资源变多了,但preload并不会阻塞onload事件的触发 prefetch prefetch是对浏览器的暗示,暗示将来可能需要某些资源,但由代理决定是否加载以及什么时候加载这些资源。 efetch跟preload不同在于,用户从A页面进入B页面,preload的会失效,而prefetch的内容可以在B页面使用。
preconnet 浏览器要建立一个连接,一般需要经过DNS查找,TCP三次握手和TLS协商(如果是https的话),这些过程都是需要相当的耗时的,所以preconnet,就是一项使浏览器能够预先建立一个连接,等真正需要加载资源的时候就能够直接请求了。 而一般形式就是
<link rel="preconnect" href="//example.com"> <link rel="preconnect" href="//cdn.example.com" crossorigin>
浏览器会进行以下步骤:
解释href的属性值,如果是合法的URL,然后继续判断URL的协议是否是http或者https否则就结束处理 如果当前页面host不同于href属性中的host,crossorigin其实被设置为anonymous(就是不带cookie了),如果希望带上cookie等信息可以加上crossorign属性,corssorign就等同于设置为use-credentials
No branches or pull requests
第177天 你有使用过preload、preconnect、prefetch这些属性吗?说说它们都有什么作用?
The text was updated successfully, but these errors were encountered: