• Stars
    star
    1,023
  • Rank 43,212 (Top 0.9 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An optimized middleware & CLI application for serving static files~!

sirv CI

An optimized middleware & CLI application for serving static files~!

  • sirv
    GitHub Β· Package
    The core module, returning a middleware function for use in Polka & Express-like frameworks.

  • sirv-cli
    GitHub Β· Package
    The standalone CLI application, allowing for instant previews of static sites.

Benchmarks

All results are taken with the following command:

$ wrk -t8 -c100 -d10s http://localhost:$PORT/
#=> wrk -t8 -c100 -d10s http://localhost:8080

Note: Expand each section to view results πŸ€”

Programmatic

Running the /bench directory with Node.js v10.13.0

Compares sirv against serve-static, both of which require programmatic usage for use within existing Node servers.

GET "/" (200)
serve-static
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.15ms    2.13ms  41.84ms   93.56%
    Req/Sec     1.49k   231.02     1.78k    89.50%
  118927 requests in 10.03s, 35.61MB read
Requests/sec:  11862.86
Transfer/sec:      3.55MB

sirv (dev: false)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.78ms  495.92us   9.50ms   64.76%
    Req/Sec     2.08k   112.73     2.42k    68.50%
  166152 requests in 10.02s, 34.38MB read
Requests/sec:  16586.47
Transfer/sec:      3.43MB

sirv (dev: true)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.79ms    1.95ms  43.30ms   94.02%
    Req/Sec     1.02k   121.86     1.33k    91.25%
  81808 requests in 10.04s, 18.88MB read
Requests/sec:   8147.26
Transfer/sec:      1.88MB
GET "/asset.js" (200)
serve-static
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.12ms    1.39ms  22.96ms   92.01%
    Req/Sec     1.49k   174.69     2.06k    73.38%
  118413 requests in 10.02s, 34.89MB read
Requests/sec:  11816.18
Transfer/sec:      3.48MB

sirv (dev: false)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.64ms  507.55us   9.45ms   68.96%
    Req/Sec     2.14k    86.26     2.30k    75.50%
  170225 requests in 10.02s, 34.42MB read
Requests/sec:  16996.46
Transfer/sec:      3.44MB

sirv (dev: true)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.21ms  445.13us  12.04ms   85.69%
    Req/Sec     1.67k    52.53     1.81k    76.88%
  133246 requests in 10.02s, 30.12MB read
Requests/sec:  13302.37
Transfer/sec:      3.01MB
GET "/404.css" (404)
serve-static
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.49ms  814.94us  19.10ms   94.89%
    Req/Sec     3.48k   406.87     5.59k    95.03%
  278809 requests in 10.10s, 28.18MB read
  Non-2xx or 3xx responses: 278809
Requests/sec:  27593.95
Transfer/sec:      2.79MB

sirv (dev: false)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.27ms  328.88us  11.86ms   90.68%
    Req/Sec     5.32k   390.13     6.26k    93.18%
  426843 requests in 10.10s, 43.15MB read
  Non-2xx or 3xx responses: 426843
Requests/sec:  42256.52
Transfer/sec:      4.27MB

sirv (dev: true)
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    24.06ms    1.63ms  52.42ms   97.02%
    Req/Sec   500.47     29.42   640.00     71.62%
  39989 requests in 10.04s, 4.04MB read
  Non-2xx or 3xx responses: 39989
Requests/sec:   3982.45
Transfer/sec:    412.25KB

CLI

Each command was run independently on Node 16.13.0

Compares sirv-cli against http-server, both of which are standalone CLI utilities.

GET "/" (200)
http-server :: Cache = YES
  $ http-server tests/public
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    18.32ms    4.08ms  69.85ms   89.77%
    Req/Sec   659.44     93.04   767.00     90.62%
  52614 requests in 10.03s, 29.30MB read
Requests/sec:   5247.35
Transfer/sec:      2.92MB


http-server :: Cache = NO
  $ http-server tests/public -c-1
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    18.89ms    4.58ms  73.49ms   89.99%
    Req/Sec   639.83    105.69   727.00     89.00%
  51052 requests in 10.03s, 29.55MB read
Requests/sec:   5091.65
Transfer/sec:      2.95MB


sirv-cli :: Cache = YES
  $ sirv tests/public
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.19ms    6.18ms 106.92ms   95.99%
    Req/Sec     1.59k   300.50     1.82k    89.75%
  126322 requests in 10.02s, 60.72MB read
Requests/sec:  12612.53
Transfer/sec:      6.06MB


sirv-cli :: Cache = NO
  $ sirv tests/public --dev
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.32ms    1.99ms  54.04ms   94.70%
    Req/Sec     1.07k   122.82     1.21k    90.00%
  85069 requests in 10.02s, 42.92MB read
Requests/sec:   8490.92
Transfer/sec:      4.28MB


sirv-cli :: Cache = YES :: Logs = NO
  $ sirv tests/public --no-logs
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.05ms    1.78ms  33.87ms   94.72%
    Req/Sec     1.72k   295.83     6.89k    93.38%
  137539 requests in 10.11s, 66.11MB read
Requests/sec:  13609.61
Transfer/sec:      6.54MB


sirv-cli :: Cache = NO :: Logs = NO
  $ sirv tests/public --no-logs --dev
---
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     9.49ms    2.10ms  44.24ms   94.50%
    Req/Sec     1.28k   175.71     1.45k    87.88%
  101753 requests in 10.02s, 51.33MB read
Requests/sec:  10157.38
Transfer/sec:      5.12MB

Notice

There is zero relationship between sirv.com and this module or its author.

License

MIT Β© Luke Edwards

More Repositories

1

clsx

A tiny (239B) utility for constructing `className` strings conditionally.
JavaScript
7,354
star
2

polka

A micro web server so fast, it'll make you dance! πŸ‘―
JavaScript
5,266
star
3

pwa

(WIP) Universal PWA Builder
JavaScript
3,123
star
4

uvu

uvu is an extremely fast and lightweight test runner for Node.js and the browser
JavaScript
2,938
star
5

taskr

A fast, concurrency-focused task automation tool.
JavaScript
2,528
star
6

sockette

The cutest little WebSocket wrapper! 🧦
JavaScript
2,398
star
7

worktop

The next generation web framework for Cloudflare Workers
TypeScript
1,635
star
8

kleur

The fastest Node.js library for formatting terminal text with ANSI colors~!
JavaScript
1,593
star
9

klona

A tiny (240B to 501B) and fast utility to "deep clone" Objects, Arrays, Dates, RegExps, and more!
JavaScript
1,537
star
10

dequal

A tiny (304B to 489B) utility to check for deep equality
JavaScript
1,271
star
11

tsm

TypeScript Module Loader
TypeScript
1,164
star
12

tinydate

A tiny (349B) reusable date formatter. Extremely fast!
JavaScript
1,060
star
13

sade

Smooth (CLI) Operator 🎢
JavaScript
1,009
star
14

rosetta

A general purpose internationalization library in 292 bytes
JavaScript
766
star
15

navaid

A navigation aid (aka, router) for the browser in 850 bytes~!
JavaScript
755
star
16

dset

A tiny (194B) utility for safely writing deep Object values~!
JavaScript
739
star
17

uid

A tiny (130B to 205B) and fast utility to generate random IDs of fixed length
JavaScript
634
star
18

httpie

A Node.js HTTP client as easy as pie! πŸ₯§
JavaScript
575
star
19

ganalytics

A tiny (312B) client-side module for tracking with Google Analytics
JavaScript
575
star
20

trouter

🐟 A fast, small-but-mighty, familiar fish...errr, router*
JavaScript
563
star
21

regexparam

A tiny (394B) utility that converts route patterns into RegExp. Limited alternative to `path-to-regexp` πŸ™‡β€β™‚οΈ
JavaScript
555
star
22

dimport

Run ES Module syntax (`import`, `import()`, and `export`) in any browser – even IE!
JavaScript
547
star
23

mri

Quickly scan for CLI flags and arguments
JavaScript
533
star
24

tempura

A light, crispy, and delicious template engine 🍀
JavaScript
514
star
25

calendarize

A tiny (202B) utility to generate calendar views.
JavaScript
471
star
26

formee

A tiny (532B) library for handling <form> elements.
JavaScript
443
star
27

qss

A tiny (294b) browser utility for encoding & decoding a querystring.
JavaScript
408
star
28

preact-starter

Webpack3 boilerplate for building SPA / PWA / offline front-end apps with Preact
JavaScript
387
star
29

uuid

A tiny (~230B)and fast UUID (V4) generator for Node and the browser
JavaScript
386
star
30

vegemite

A Pub/Sub state manager you'll love... or hate
JavaScript
373
star
31

resolve.exports

A tiny (952b), correct, general-purpose, and configurable `"exports"` and `"imports"` resolver without file-system reliance
TypeScript
351
star
32

polkadot

The tiny HTTP server that gets out of your way! ・
JavaScript
322
star
33

matchit

Quickly parse & match URLs
JavaScript
321
star
34

fetch-event-stream

A tiny (736b) utility for Server Sent Event (SSE) streaming via `fetch` and Web Streams API
TypeScript
321
star
35

flru

A tiny (215B) and fast Least Recently Used (LRU) cache
JavaScript
310
star
36

mrmime

A tiny (2.8kB) and fast utility for getting a MIME type from an extension or filename
TypeScript
300
star
37

watchlist

Recursively watch a list of directories & run a command on any file system changes
JavaScript
261
star
38

arr

A collection of tiny, highly performant Array.prototype alternatives
JavaScript
255
star
39

ley

(WIP) Driver-agnostic database migrations
JavaScript
254
star
40

flattie

A tiny (203B) and fast utility to flatten an object with customizable glue
JavaScript
254
star
41

webpack-messages

Beautifully format Webpack messages throughout your bundle lifecycle(s)!
JavaScript
246
star
42

obj-str

A tiny (96B) library for serializing Object values to Strings.
JavaScript
225
star
43

templite

Lightweight templating in 150 bytes
JavaScript
221
star
44

ms

A tiny (414B) and fast utility to convert milliseconds to and from strings.
JavaScript
200
star
45

nestie

A tiny (215B) and fast utility to expand a flattened object
JavaScript
199
star
46

throttles

A tiny (139B to 204B) utility to regulate the execution rate of your functions
JavaScript
195
star
47

hexoid

A tiny (190B) and extremely fast utility to generate random IDs of fixed length
JavaScript
185
star
48

fromnow

A tiny (339B) utility for human-readable time differences between now and past or future dates.
JavaScript
178
star
49

astray

Walk an AST without being led astray
JavaScript
177
star
50

tmp-cache

A least-recently-used cache in 35 lines of code~!
JavaScript
174
star
51

bundt

A simple bundler for your delicious modules
JavaScript
167
star
52

wrr

A tiny (148B) weighted round robin utility
JavaScript
164
star
53

freshie

(WIP) A fresh take on building universal applications with support for pluggable frontends and backends.
TypeScript
153
star
54

svelte-ssr-worker

A quick demo for rendering Svelte server-side (SSR), but within a Cloudflare Worker!
JavaScript
152
star
55

totalist

A tiny (195B to 224B) utility to recursively list all (total) files in a directory
JavaScript
148
star
56

typescript-module

Template repository for authoring npm modules via TypeScript
TypeScript
141
star
57

sublet

Reactive leases for data subscriptions
JavaScript
139
star
58

escalade

A tiny (183B to 210B) and fast utility to ascend parent directories
JavaScript
138
star
59

webpack-route-manifest

Generate an asset manifest file, keyed by route patterns!
JavaScript
127
star
60

url-shim

A 1.5kB browser polyfill for the Node.js `URL` and `URLSearchParams` classes.
JavaScript
123
star
61

semiver

A tiny (153B) utility to compare semver strings.
JavaScript
119
star
62

cfw

(WIP) A build and deploy utility for Cloudflare Workers.
TypeScript
113
star
63

svelte-demo

Multi-page demo built Svelte 3.x and Rollup with code-splitting
Svelte
113
star
64

webpack-format-messages

Beautiful formatting for Webpack messages; ported from Create React App!
JavaScript
111
star
65

gittar

🎸 Download and/or Extract git repositories (GitHub, GitLab, BitBucket). Cross-platform and Offline-first!
JavaScript
111
star
66

saturated

A tiny (203B) utility to enqueue items for batch processing and/or satisfying rate limits.
JavaScript
110
star
67

webpack-critical

Extracts & inlines Critical CSS with Wepack
JavaScript
109
star
68

pages-fullstack

Demo SvelteKit application running on Cloudflare Pages
Svelte
102
star
69

sort-isostring

A tiny (110B) and fast utility to sort ISO 8601 Date strings
JavaScript
98
star
70

colors-app

🎨 A PWA for copying values from popular color palettes. Supports HEX, RGB, and HSL formats.
JavaScript
95
star
71

salteen

A snappy and lightweight (259B) utility to encrypt and decrypt values with salt.
JavaScript
95
star
72

is-offline

A tiny (174B) library to detect `offline` status & respond to changes in the browser.
JavaScript
91
star
73

seolint

(WIP) A robust and configurable SEO linter
TypeScript
86
star
74

rafps

A tiny (178B) helper for playing, pausing, and setting `requestAnimationFrame` frame rates
JavaScript
82
star
75

preact-cli-ssr

A quick demo for adding SSR to a Preact CLI app
JavaScript
79
star
76

webpack-modules

Handle `.mjs` files correctly within webpack
JavaScript
71
star
77

csprng

A tiny (~90B) isomorphic wrapper for `crypto.randomBytes` in Node.js and browsers.
JavaScript
66
star
78

classico

A tiny (255B) shim when Element.classList cannot be used~!
JavaScript
62
star
79

premove

A tiny (201B to 247B) utility to remove items recursively
JavaScript
62
star
80

mk-dirs

A tiny (381B to 419B) utility to make a directory and its parents, recursively
JavaScript
54
star
81

primeval

A tiny (128B) utility to check if a value is a prime number
JavaScript
51
star
82

loadr

Quickly attach multiple ESM Loaders and/or Require Hooks together but without the repetitive `--experimental-loader` and/or `--require` Node flags
JavaScript
49
star
83

preact-progress

Simple and lightweight (~590 bytes gzip) progress bar component for Preact
JavaScript
49
star
84

route-manifest

A tiny (412B) runtime to retrieve the correct entry from a Route Manifest file.
JavaScript
46
star
85

svelte-preprocess-esbuild

A Svelte Preprocessor to compile TypeScript via esbuild!
TypeScript
44
star
86

preact-scroll-header

A (800b gzip) header that will show/hide while scrolling for Preact
JavaScript
41
star
87

inferno-starter

Webpack2 boilerplate for building SPA / PWA / offline front-end apps with Inferno.js
JavaScript
41
star
88

rollup-route-manifest

A Rollup plugin to generate an asset manifest, keyed by route patterns ("route manifest")
JavaScript
40
star
89

onloaded

A tiny (350B) library to detect when images have loaded.
JavaScript
38
star
90

webpack-plugin-replace

Replace content while bundling.
JavaScript
36
star
91

route-sort

A tiny (200B) utility to sort route patterns by specificity
JavaScript
35
star
92

scorta

A tiny (330B to 357B) and fast utility to find a package's hidden supply / cache directory.
JavaScript
33
star
93

local-hostname

A tiny (171B) utility to check if a hostname is local
JavaScript
32
star
94

taskr-outdated

A generator & coroutine-based task runner. Fasten your seatbelt. πŸš€
JavaScript
32
star
95

rewrite-imports

Rewrite `import` statements as `require()`s; via RegExp
JavaScript
31
star
96

preact-offline

A (300b gzip) component to render alerts/messages when offline.
JavaScript
29
star
97

fly-kit-preact

A starter kit for building offline / SPA / PWA apps with Preact
JavaScript
28
star
98

fannypack

The tool belt for front-end developers
JavaScript
28
star
99

is-ready

A tiny (309B) library to detect when `window` globals are defined and ready to use~!
JavaScript
28
star
100

ava-http

Async HTTP request wrapper πŸš€
JavaScript
25
star