npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

routebox-ft

v2.0.0

Published

Transparent catbox-based response caching for Hapi servers

Downloads

1

Readme

Routebox

Build Status

Routebox integrates with catbox to provide transparent route-level caching. It can work with zero configuration changes on your server.

Usage

To Routebox, simply register it on your server.

server.register(require('routebox'), function (err) {
    // ...
});

By default, all endpoints with the cache configured in their route options and privacy set to public (or omitted; public is the default) will be cached. Routebox automatically hooks in to the expiresAt, expiresIn, and statuses options of the caching config.

These options are available when routebox is registered and can also be overridden on a per-route basis by passing in config.plugins.routebox:

  • cache corresponds to the cache name for response caches. Uses the server's default if not given.
  • enabled whether to enable caching on the endpoint. Defaults to true, meaning all viable (see above) endpoints will be cached.
  • digest defaults to djb2, this is the algorithm used to digest the request for caching purposes. Other available options are: md5, sha1, sha256, sha512, ripemd160.
  • segment is the Catbox cache segment to store in. Defaults to routebox
  • wasCachedHeader header that gets sent down when we serve a cached response. Defaults to X-Was-Cached.
  • parse configures which parts of the request will be used to form the cache key:
    • query whether to include the query string. Defaults to true.
    • method whether to include the request method. Defaults to true.
    • path whether to include the route path. Defaults to true.
  • callbacks provides touch-points you can use to intercept the request and gather metrics. Each callback functions like a Hapi extension, taking the (request, reply) as arguments, after which you should call reply.continue(). These are called at the onPreResponse lifecycle point.
    • onCacheHit is called when a cached page is served.
    • onCacheMiss is called when a page that could be cached but is not (yet) is served.
    • auth will skip caching if a user has been authenticated. Defaults to false, meaning always cache regardless of whether there is a request.auth object.

In addition there is one other setting that can be specified only in config.plugins.routebox:

  • pluginCache can be used to set cache options instead of config.cache. So caching works as specified by config.plugins.routebox.pluginCache, but cache-control directives aren't sent out to the browser. If there's an endpoint that can sometimes provide private data, you can call request.nocache() to prevent Routebox from caching the request.