lactate

Simple and featureful assets server

Lactate

Very simple static file handler, with a few electives.

npm install lactate

Just pass three arguments to the serve function (path, request, response). Lactate will stream your file to the client in the most efficient way, by piping: readFile > gZip > response.

 
var express = require('express')
var app = express.createServer()
var lactate = require('lactate')()
 
app.get('/', function(reqres) {
  reurn lactate.serve('pages/land.html', req, res)
})
 
app.get('/files/*', function(reqres) {
  return lactate.serve(req.url.substring(1), req, res)
})
 
app.get('/images/:img', function(reqres) {
  var img = req.params.img
  return lactate.serve('thumbs/'+img, req, res)
})
 
app.listen(8080)
 

##Options

Options can be passed to the initialization function or using the set method.

 
//Passing to initialization function 
var lactate = require('lactate')({expires:172800})
 
//Set method 
lactate.set('expires', null)
 
//Either function accepts (key, value) or an object. 
 

Available options are currently cache (boolean), expires (seconds), and debug.

The cache option will have Lactate save your files in memory. By default this is enabled, and there's no great reason to disable it.

Setting expires will have Lactase set appropriate Expires and Cache-Control headers for client-side caching. This option represents seconds-from-now to expire.

Debugging is level-based. The debug function accepts a number and a callback function, or a boolean. By default, the debugging function is console.log. The following syntaxes are valid.

 
var lactate = require('lactate')({
  debug:true
})
 
lactate.set('debug', 0, function(levelmsgpathstatusCode) {
  /* 
    Do stuff
 
    Note however that statusCode arguments are only
    given for level 0 listeners
  */
})
 
lactate.set('debug', 1, console.log)
lactate.set({debug:false})
 

More robust debugging will come in the future as I isolate the functionality into a module of its own.

##TODO

  • Express middleware
  • Expiration defaults, e.g. 'two days,' 'one month'
  • Redis integration
  • Standalone server