@@ -42,7 +42,7 @@ var mime = {
42
42
* @api private
43
43
*/
44
44
45
- var bundle = / \+ ( (?: \+ ) ? [ \w \- ] + ) * (?: \. v \d + \. \d + \. \d + ) ? (?: \. j s ) $ / g
45
+ var bundle = / \+ ( (?: \+ ) ? [ \w \- ] + ) * (?: \. v \d + \. \d + \. \d + ) ? (?: \. j s ) $ /
46
46
, versioning = / \. v \d + \. \d + \. \d + (?: \. j s ) $ / ;
47
47
48
48
/**
@@ -121,10 +121,14 @@ Static.prototype.init = function () {
121
121
build ( self . manager . get ( 'transports' ) , callback ) ;
122
122
} ) ;
123
123
124
+ this . add ( '/socket.io.v' , { mime : mime . js } , function ( path , callback ) {
125
+ build ( self . manager . get ( 'transports' ) , callback ) ;
126
+ } ) ;
127
+
124
128
// allow custom builds based on url paths
125
129
this . add ( '/socket.io+' , { mime : mime . js } , function ( path , callback ) {
126
130
var available = self . manager . get ( 'transports' )
127
- , matches = bundle . exec ( path )
131
+ , matches = path . match ( bundle )
128
132
, transports = [ ] ;
129
133
130
134
if ( ! matches ) return callback ( 'No valid transports' ) ;
@@ -218,7 +222,7 @@ Static.prototype.has = function (path) {
218
222
, i = keys . length ;
219
223
220
224
while ( i -- ) {
221
- if ( ! ! ~ path . indexOf ( keys [ i ] ) ) return this . paths [ keys [ i ] ] ;
225
+ if ( - ~ path . indexOf ( keys [ i ] ) ) return this . paths [ keys [ i ] ] ;
222
226
}
223
227
224
228
return false ;
@@ -310,15 +314,16 @@ Static.prototype.write = function (path, req, res) {
310
314
311
315
// see if we need to set Expire headers because the path is versioned
312
316
if ( versioned ) {
313
- var expires = self . manager . get ( 'browser client expires' )
314
- headers [ 'Cache-Control' ] = 'public , max-age=' + expires ;
317
+ var expires = self . manager . get ( 'browser client expires' ) ;
318
+ headers [ 'Cache-Control' ] = 'private, x-gzip-ok="" , max-age=' + expires ;
315
319
headers [ 'Date' ] = new Date ( ) . toUTCString ( ) ;
316
320
headers [ 'Expires' ] = new Date ( Date . now ( ) + ( expires * 1000 ) ) . toUTCString ( ) ;
317
321
}
318
322
319
323
if ( gzip && reply . gzip ) {
320
324
headers [ 'Content-Length' ] = reply . gzip . length ;
321
325
headers [ 'Content-Encoding' ] = 'gzip' ;
326
+ headers [ 'Vary' ] = 'Accept-Encoding' ;
322
327
write ( 200 , headers , reply . gzip . content , mime . encoding ) ;
323
328
} else {
324
329
headers [ 'Content-Length' ] = reply . length ;
0 commit comments