Skip to content

Commit

Permalink
Compress resources w/ gzip
Browse files Browse the repository at this point in the history
  • Loading branch information
ethantw committed Dec 10, 2014
1 parent 948acc5 commit b34fd1e
Showing 1 changed file with 26 additions and 15 deletions.
41 changes: 26 additions & 15 deletions server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ var exec = require( 'child_process' ).exec
var spawn = require( 'child_process' ).spawn
var mime = require( 'mime-types' )

var zlib = require( 'zlib')
var ETag = require( 'ETag' )
var stmd = require( 'stmd' )
var parser = new stmd.DocParser()
Expand Down Expand Up @@ -81,9 +82,19 @@ http.createServer( function ( req, res ) {
var slashless = uri.replace( /^\/(.*)\/?$/ig, '$1' )
var manualId = false
var mdfilename = false
var acceptGzip = /\bgzip\b/i.test( req.headers[ 'accept-encoding' ]) ? true : false
var filename
var etag

function resWrite( data, binary ) {
if ( binary ) {
res.write( data, 'binary' )
res.end()
return
}
res.end( data )
}

function httpRespond( code, data, headers, binary ) {
var headers = headers || {}
var data = data || ''
Expand All @@ -101,14 +112,20 @@ http.createServer( function ( req, res ) {
return
}

res.writeHead( code, headers )

if ( binary ) {
res.write( data, 'binary' )
res.end()
if ( acceptGzip ) {
headers[ 'Content-Encoding' ] = 'gzip'
zlib.gzip( new Buffer( data, binary ? 'binary' : 'utf-8' ), function( err, data ) {
if ( err ) {
responseWithError( 500 )
return
}
res.writeHead( code, headers )
resWrite( data, binary )
})
return
}
res.end( data )
res.writeHead( code, headers )
resWrite( data, binary )
}

function responseWithError( code ) {
Expand Down Expand Up @@ -171,10 +188,7 @@ http.createServer( function ( req, res ) {
})

// check for file existence
} else if (
( !exists || /manifest.appcache/.test( filename )) &&
( !exists && !/^\/manual(\/.*)?$/.test( uri ))
) {
} else if ( !exists && !/^\/manual(\/.*)?$/.test( uri )) {
responseWithError( 404 )
return

Expand Down Expand Up @@ -237,8 +251,8 @@ http.createServer( function ( req, res ) {
html = html
.replace( /\{\{manual\-page\-id\}\}/gi, manualId )
.replace( /\{\{manual\-page\-title\}\}/gi, ret[0] )
.replace( /\{\{han\-version\}\}/gi, LANG['han-version'] )
.replace( '{{parsed-article-html}}', ret[1] )
.replace( /\{\{han\-version\}\}/gi, LANG['han-version'] )

httpRespond( 200, html, {
'Content-Type': HTML_CNTT,
Expand All @@ -257,17 +271,14 @@ http.createServer( function ( req, res ) {
} else {
fs.readFile( filename, 'binary', function( err, file ) {
var ext

if ( err ) {
responseWithError( 500 )
return
}

ext = path.extname( filename ).slice( 1 )

httpRespond( 200, file, {
'Access-Control-Allow-Origin': '*',
'Content-Type': mime.contentType( ext ),
'Content-Type': mime.contentType( ext ),
'ETag': etag
}, true )
})
Expand Down

0 comments on commit b34fd1e

Please sign in to comment.