Skip to content

Commit

Permalink
Golf page-loader (#8190)
Browse files Browse the repository at this point in the history
  • Loading branch information
Timer committed Jul 31, 2019
1 parent 85db928 commit a31eb1b
Showing 1 changed file with 22 additions and 33 deletions.
55 changes: 22 additions & 33 deletions packages/next/client/page-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,24 @@
import mitt from 'next-server/dist/lib/mitt'
import unfetch from 'unfetch'

// smaller version of https://gist.github.com/igrigorik/a02f2359f3bc50ca7a9c
function supportsPreload (list) {
if (!list || !list.supports) {
return false
}
function supportsPreload (el) {
try {
return list.supports('preload')
} catch (e) {
return el.relList.supports('preload')
} catch {
return false
}
}

const hasPreload = supportsPreload(document.createElement('link').relList)
const hasPreload = supportsPreload(document.createElement('link'))

function preloadScript (url) {
const link = document.createElement('link')
link.rel = 'preload'
link.crossOrigin = process.crossOrigin
link.href = url
link.as = 'script'
document.head.appendChild(link)
}

export default class PageLoader {
constructor (buildId, assetPrefix) {
Expand Down Expand Up @@ -189,12 +194,10 @@ export default class PageLoader {
this.prefetchCache.add(scriptRoute)

// Inspired by quicklink, license: https://github.com/GoogleChromeLabs/quicklink/blob/master/LICENSE
// Don't prefetch if the user is on 2G / Don't prefetch if Save-Data is enabled
if ('connection' in navigator) {
if (
(navigator.connection.effectiveType || '').indexOf('2g') !== -1 ||
navigator.connection.saveData
) {
let cn
if ((cn = navigator.connection)) {
// Don't prefetch if the user is on 2G or if Save-Data is enabled.
if ((cn.effectiveType || '').indexOf('2g') !== -1 || cn.saveData) {
return
}
}
Expand All @@ -205,14 +208,11 @@ export default class PageLoader {
if (hasPreload) {
await this.promisedBuildId

const link = document.createElement('link')
link.rel = 'preload'
link.crossOrigin = process.crossOrigin
link.href = `${this.assetPrefix}/_next/static/${encodeURIComponent(
this.buildId
)}/pages${scriptRoute}`
link.as = 'script'
document.head.appendChild(link)
preloadScript(
`${this.assetPrefix}/_next/static/${encodeURIComponent(
this.buildId
)}/pages${scriptRoute}`
)
return
}

Expand All @@ -226,15 +226,4 @@ export default class PageLoader {
})
}
}

clearCache (route) {
route = this.normalizeRoute(route)
delete this.pageCache[route]
delete this.loadingRoutes[route]

const script = document.getElementById(`__NEXT_PAGE__${route}`)
if (script) {
script.parentNode.removeChild(script)
}
}
}

0 comments on commit a31eb1b

Please sign in to comment.