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

faster-query

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

faster-query

Faster query for any slow function. Get any data from cache and update in cache AFTER data is received

  • 1.1.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Incremental Data Revalidation for any slow function.

The purpose of this script is to immediately and very quickly (a few milliseconds) return result of execution slow functions from cache and update the data in the cache after the data is returned.

For example, you have fetch, the request is executed for 200 milliseconds and each client waits for data to load, although the data is updated once an hour. This script, after the first execution, caches the data and returns the result of the previous execution in ~5 milliseconds. This is similar to getStaticProps with revalidate in recent versions next.js.

Installation

npm i faster-query

or

yarn add faster-query

Example

see examples dir for more examples.

import ISR from 'faster-query';

const url = 'https://slow.site/with/slow/backend';
const slowFunctionWithQueryData = () => fetch(url);

const isr = new ISR(slowFunctionWithQueryData, {
    key: url,
    cacheTime: 30 * 1000,
});

let data = await isr.getData();

Constructor

first argument

Asynchronous Function (fetching, calculating, etc...) Must return some data.

const slowFunctionWithQueryData = () => fetch('https://slow.site/with/slow/backend');

second argument

Object of options

options = {
    cacheTime = 5 * 1000, // Time from first execution, then script will re-execute function. Returning CACHED data (Boolean, Time in milliseconds)
    criticalCacheTime = 60 * 60 * 1000, // Time, after first execution, then cache is cleaned/ Function executed always (Milliseconds)
    key, // Unique key in cache (String, Buffer, Array or Uint8Array)
    onComplete = function(data: any) :any, // Do something with data from first function (Function)
    isLogging = false, // Show logs or not (Boolean)
    noCache = false, // if true - no magic (Boolean)
    clearCache = false, // If true - ALL cache will be cleaned before execution (Boolean)
}

Methods

getData - async, returning data

How it works

  • First execution: executing function, returning result, result is caching
  • Second execution:
    • If cacheTime < then time from first execution - returning result from cache
    • If cacheTime > then time from first execution: immediately returning result from cache, re-executing function and putting result to cache
  • If criticalCacheTime > then time from last execution: like in First execution

--- По-русски ---

Цель этого скрипта - немедленно и очень быстро (несколько миллисекунд) вернуть результат выполнения медленных функций из кеша и обновить данные в кэше после того, как данные будут возвращены.

Например, у вас есть fetch, запрос выполняется в течение 200 миллисекунд, и каждый клиент ожидает загрузки данных, хотя данные обновляются раз в час. Этот скрипт после первого выполнения кэширует данные и возвращает результат предыдущего выполнения через ~5 миллисекунд. Это похоже на getStaticProps с параметром revalidate в последних версиях next.js .

Установка

npm i faster-query

или

yarn add faster-query

Пример

В папке examples есть пару примеров.

import ISR from 'faster-query';

const url = 'https://slow.site/with/slow/backend';
const slowFunctionWithQueryData = () => fetch(url);

const isr = new ISR(slowFunctionWithQueryData, {
    key: url,
    cacheTime: 30 * 1000,
});

let data = await isr.getData();

Constructor

Первый аргумент класса

Медленная Асинхронная функция (запрос данных с бекенда, например)

const slowFunctionWithQueryData = () => fetch('https://slow.site/with/slow/backend');

Второй аргумент

Объект настроек выполнения

options = {
    cacheTime = 5 * 1000, // Время с момента первого выполнения, затем скрипт повторно выполнит функцию. Возврат **кешированных** данных (Boolean, время в миллисекундах)
    criticalCacheTime = 60 * 60 * 1000 , // Время, после первого выполнения, когда кэш очистится / Функция выполняется всегда (миллисекунды)
    key, // Уникальный ключ в кэше (строка, буфер, массив или Uint8Array)
    onComplete = function(data: any) :any, // Операции с данными из первой функции (Function)
    isLogging = false, // Показывать отладку в консоли или нет (Boolean)
    noCache = false, // если true - никакой магии (Boolean)
    clearCache = false, // Если true - **весь** кэш будет очищен перед выполнением (Boolean)
}

Методы класса

getData - асинхронная, возврат данных

Как это работает

  • Первое выполнение: выполняется функция, возвращающается результат, результат кэшируется
  • Вторая и последующие выполнения:
    • Если cacheTime < времени с момента первого выполнения - возвращается результат из кэша
  • Если cacheTime >, времени с момента первого выполнения: немедленно возвращается результат из кэша, а затем выполняется функция и результат помещается в кэш
  • Если criticalCacheTime > времени с момента последнего выполнения: все работает как при первом выполнении

Keywords

FAQs

Package last updated on 16 Feb 2023

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