instant.page:提高網站頁面載入速度
能提高網頁的載入速度,主要原理是當使用者滑鼠停留在連結上時,會透過html預載入這個連結。
在使用者點選連結之前,他們將滑鼠懸停在該連結上。當使用者停留65毫秒時,他們將有一半的機會點選該連結,因此此時開始預載入,平均超過300毫秒,以便頁面預載入。
在移動裝置上,使用者在釋放之前開始觸控他們的顯示器,平均花費90毫秒來預載入頁面。
也可以到https://instant.page/頁面將一段js加入自己的網站,不過其伺服器是在國外。點選標題下載原始碼放入自己的伺服器上。
原始碼:
/*! instant.page v1.0.0 - (C) 2019 Alexandre Dieulot - https://instant.page/license */ let urlToPreload let mouseoverTimer let lastTouchTimestamp const prefetcher = document.createElement('link') const isSupported = prefetcher.relList && prefetcher.relList.supports && prefetcher.relList.supports('prefetch') const allowQueryString = 'instantAllowQueryString' in document.body.dataset if (isSupported) { prefetcher.rel = 'prefetch' document.head.appendChild(prefetcher) const eventListenersOptions = { capture: true, passive: true, } document.addEventListener('touchstart', touchstartListener, eventListenersOptions) document.addEventListener('mouseover', mouseoverListener, eventListenersOptions) } function touchstartListener(event) { /* Chrome on Android calls mouseover before touchcancel so `lastTouchTimestamp` * must be assigned on touchstart to be measured on mouseover. */ lastTouchTimestamp = performance.now() const linkElement = event.target.closest('a') if (!linkElement) { return } if (!isPreloadable(linkElement)) { return } linkElement.addEventListener('touchcancel', touchendAndTouchcancelListener, {passive: true}) linkElement.addEventListener('touchend', touchendAndTouchcancelListener, {passive: true}) urlToPreload = linkElement.href preload(linkElement.href) } function touchendAndTouchcancelListener() { urlToPreload = undefined stopPreloading() } function mouseoverListener(event) { if (performance.now() - lastTouchTimestamp < 1100) { return } const linkElement = event.target.closest('a') if (!linkElement) { return } if (!isPreloadable(linkElement)) { return } linkElement.addEventListener('mouseout', mouseoutListener, {passive: true}) urlToPreload = linkElement.href mouseoverTimer = setTimeout(() => { preload(linkElement.href) mouseoverTimer = undefined }, 65) } function mouseoutListener(event) { if (event.relatedTarget && event.target.closest('a') == event.relatedTarget.closest('a')) { return } if (mouseoverTimer) { clearTimeout(mouseoverTimer) mouseoverTimer = undefined } else { urlToPreload = undefined stopPreloading() } } function isPreloadable(linkElement) { if (urlToPreload == linkElement.href) { return } const urlObject = new URL(linkElement.href) if (urlObject.origin != location.origin) { return } if (!allowQueryString && urlObject.search) { return } if (urlObject.pathname + urlObject.search == location.pathname + location.search && urlObject.hash) { return } if ('noInstant' in linkElement.dataset) { return } return true } function preload(url) { prefetcher.href = url } function stopPreloading() { /* The spec says an empty string should abort the prefetching * but Firefox 64 interprets it as a relative URL to prefetch. */ prefetcher.removeAttribute('href') } |
在頁面加入:
<script src="instant.js" type="module" integrity="sha384-6w2SekMzCkuMQ9sEbq0cLviD/yR2HfA/+ekmKiBnFlsoSvb/VmQFSi/umVShadQI"></script>
相關文章
- js動態載入實現提高網頁載入速度JS網頁
- Nginx開啟gzip壓縮大幅提高頁面載入速度Nginx
- 提高網站載入速度的一些小技巧網站
- 提高網站載入速度的五大方法網站
- Nginx效能優化功能- Gzip壓縮(大幅度提高頁面載入速度)Nginx優化
- [譯] HTTP/2 下提高網站載入速度的資源打包指南HTTP網站
- 網站載入速度有多重要?網站
- 如何透過最佳化網站提高網頁開啟速度網站網頁
- 10種優化頁面載入速度的方法優化
- 如何通過預載入器提升網頁載入速度網頁
- 如何提高網站的開啟速度?網站
- 基於Vue的SPA如何優化頁面載入速度Vue優化
- 網站頁面載入速度在 2019 年對於 Google SEO 排名的影響 - TechMoon 科技月球網站Go
- 前端網頁載入速度緩慢優化策略前端網頁優化
- 優化網站載入速度的14個技巧優化網站
- 400% 的飛躍-web 頁面載入速度優化實戰Web優化
- 網站開啟速度慢應該怎麼提升載入速度?網站
- MarketingCharts:零售網站頁面平均載入時間增加22%GC網站
- Vue 網站首頁載入優化Vue網站優化
- 使用navigation timing統計網頁載入速度Navigation網頁
- 加快你的網站響應速度-Vue懶載入網站Vue
- 提升WordPress網站載入速度的8個小技巧網站
- Apache開啟gzip壓縮提高網站速度Apache網站
- 【效能優化實踐】優化打包策略提升頁面載入速度優化
- 載入頁面:網站如何導致使用者感染惡意軟體網站
- Cucumbertown:網頁載入速度 最多不能超過3秒網頁
- playwright 頁面載入速度度量(錯誤之處,敬請斧正)
- 如何提高無線網路bt下載速度
- 直播原始碼網站,新使用者登入時的註冊頁面和登入頁面原始碼網站
- 頁面載入全過程
- 頁面載入和解析流程
- 頁面載入順序jQueryjQuery
- 啟動載入廣告頁面
- asp.net 頁面載入ASP.NET
- 頁面載入loading
- 使用Web元件載入頁面Web元件
- Unbounce:70%的消費者承認頁面載入速度會影響網路購物決策
- 提高無線網路下載速度的秘訣