Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

quicklink

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

quicklink

Faster subsequent page-loads by prefetching in-viewport links during idle time

  • 0.0.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
12K
increased by4%
Maintainers
1
Weekly downloads
 
Created
Source

Faster subsequent page-loads by prefetching in-viewport links during idle time

How it works

Quicklink attempts to make navigations to subsequent pages load faster. It:

  • Detects links within the viewport (using IntersectionObsever)
  • Waits until the browser is idle (using requestIdleCallback)
  • Checks if the user isn't on a slow connection (using navigator.connection.effectiveType) or has data-saver enabled (using navigator.connection.saveData)
  • Prefetches URLs to the links (using <link rel=prefetch> or XHR). Provides some control over the request priority (can switch to fetch() if supported).

Installation

For use with node and npm:

npm install --save quicklink

Usage

Once initialized, quicklink will automatically prefetch URLs for links that are in-viewport during idle time.

Quickstart:

<!-- Include quicklink from dist -->
<script src="dist/quicklink.js"></script>
<!-- Initialize (you can do this to whenever you want) -->
<script>
quicklink();
</script>

ES Module import:

import quicklink from "dist/quicklink.mjs";
quicklink();

The above options are best for multi-page sites. Single-page apps have a few options available for using quicklink with a router:

  • Call quicklink() once a navigation to a new route has completed
  • Call quicklink() against a specific DOM element / component
  • Call quicklink({urls:[...]}) with a custom set of URLs to prefetch

API

quicklink accepts an optional options object with the following parameters:

  • el: DOM element to observe for in-viewport links to prefetch
  • urls: Static array of URLs to prefetch (instead of observing document or a DOM element links in the viewport)
  • timeout: Integer for the requestIdleCallback timeout. A time in milliseconds by which the browser must execute prefetching. Defaults to 2 seconds.
  • priority: String specifying preferred priority for fetches. Defaults to low. high will attempt to use the fetch() API where supported (rather than rel=prefetch)

TODO:

  • Explore detecting file-extension of resources and using rel=preload for high priority fetches
  • Explore using Priority Hints for importance hinting

Polyfills

quicklink:

  • Includes a very small fallback for requestIdleCallback
  • Requires IntersectionObserver to be supported (see CanIUse). We recommend conditionally polyfillng this feature with a service like Polyfill.io:
<script src="https://polyfill.io/v2/polyfill.min.js?features=IntersectionObserver"></script>

Recipes

Set a custom timeout for prefetching resources

Defaults to 2 seconds (via requestIdleCallback). Here we override it to 4 seconds:

quicklink({
  timeout: 4000
});

Set the DOM element to obseve for in-viewport links

Defaults to document otherwise.

const elem = document.getElementById('carousel');
quicklink({
  el: elem
});

Set a custom array of URLs to be prefetched

If you would prefer to provide a static list of URLs to be prefetched, instead of detecting those in-viewport, customizing URLs is supported.

quicklink({
   urls: ['2.html','3.html', '4.js']
});

Set the request priority for prefetches

Defaults to low-priority (rel=prefetch or XHR). For high-priority, attempts to use fetch() or falls back to XHR.

quicklink({ priority: 'high' });

License

Licensed under the Apache-2.0 license.

Keywords

FAQs

Package last updated on 27 Nov 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc