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

speedy-static

v0.3.1

Published

Serve your static files with an high-speed middleware

Downloads

7

Readme

speedy-static

Serve your static files with an high-speed middleware

NPM version Downloads Build Status Coverage Status

speedy-static is an high-speed middleware that allows you to serve files statically. It provides some useful options in order to make itself as near as possible to your needs.

ChangeLog

  • 0.3.1 - download and downloadRegExp options implemented
  • 0.3.0 - Auto-compilation of ".less", ".coffee", ".cson" and ".yml"
  • 0.2.3 - Index option implemented
  • 0.1.7 - Hide dotfiles option implemented
  • 0.1.6 - numeraljs format supported by max-cache-size option
  • 0.1.4 - JSON minimization
  • 0.1.3 - Cache-Control header, s-maxage implemented

How it works

speedy-static is fully optimized to reach the best performance in serving static resources.

The server side optimizations:

  • use a LRU cache in order to limit as more as possible I/O waits generated by filesystem calls
  • compress and minimize to reduce up to 70% the size of your source files
  • stores already compiled, compressed and minimized source files into LRU to save CPU and memory
  • can prepare cache to make the middleware start with the most of resources already loaded in memory
  • allow the programmer to ignore some resources or an entire tree in order to prevent useless filesystem calls or wasting of cache space

The client side optimizations:

  • use conditional headers to prevent the server send multiple times the same resources payload
  • prevent the browser to frequently ask the server to validate resources using a validation time

How to install

    npm install speedy-static

How to use it

    var express = require("express");
    var app = express();

    var speedyStatic = require("speedy-static");

    // if you don't want to prepare cache it returns the middleware
    var middleware = speedyStatic("/path/to/mount");
    app.use("/mount/point", middleware);

    // if you want to prepare cache before having the middleware,
    // it will return you a promise in order to give you the middleware
    // as soon as the cache is prepared
    speedyStatic("/path/to/mount", {"prepare-cache":true})
                .then(function(middleware){
                    app.use("/mount/point", middleware);
                });

API

speedyStatic(pathToMount[, options]);

The path to mount is the root path of the static files you want to serve. The options allows you to make your tuning.

Options

Name | Description | Default ---|---|--- index | It allows you to define your index files (it works for all the directories) | ["index.html", "index.htm"] compile(1) | It can make auto-compilations from ".less" to ".css", from ".coffee" to ".js" and from ".cson" and ".yml" to ".json" | [".less", ".coffee", ".cson", ".yml"] compression | It allows you to serve files compressing them when possible | true compression-level | It defines the level of the compression [0=BEST_SPEED,1=DEFAULT_COMRESSION,2=BEST_COMPRESSION] | 1 minify | It allows you to minimize source files when possibile [.js,.css,.json] | false minify-mangle | It allows you to also mangle minimized source files | true etag | It produces and sends to the client the ETag header in order to validate further requests of the same resource | true last-modified | It reads the last modification date and sends to the client the Last-Modified header in order to validate further requests of the same resource | true content-type | It writes the Content-Type header referred to the requested resource | true max-cache-size | It defines the size limit (in bytes) of the LRU cache (it supports numeraljs formats) | 104857600 (100MB) max-cache-age | It defines the expiration time (in milliseconds) of the LRU cache elements | 0 (never expire) prepare-cache | It prepares the LRU cache before giving the middleware | false browser-cache | It allows you to use the browser cache to optimize the amount of calls and data | true browser-cache-max-age | It defines the expiration time (in seconds) of the browser cache resources | 300 browser-cache-s-maxage | It allows you to override the intermediary (such as CDNs) max-age and expires headers | 300 hide-dotfiles | It allows you to hide dotfiles | true ignore | It allows you to ignore resources. It works with an entire path or a single resource name | [ ] ignoreRegExp | It allows you to ignore resources defining regular expressions. It works only on file names | [ ] download(2) | It allows you to make resources downloadable. It works with an entire path or a single resource name | [ ] downloadRegExp(2) | It allows you to make resources downloadable defining regular expressions. It works only on file names | [ ] continue | It allows you to pass the request to the next middleware instead of ending it | false ignore-errors | It allows you to ignore server errors hiding them with a 404 | false

  1. Compiled files can be minimized, mangled and compressed as if they were been fetched already compiled.
  2. Downloadable resources won't be compiled, minimized or compressed.

Unit testing

To test speedy-static be sure that mocha and istanbul were installed, otherwise you can install them typing

    npm install -g mocha
    npm install -g istanbul

Be also sure that devDependencies was installed, otherwise you can install them jumping into speedy-static directory and typing

    npm install

Then, inside speedy-static directory type the following command.

    npm test

Licence

Licenced under MIT Copyright (c) 2016 - Pietro Cucinella