2016-03-03 44 views
2

我有一些Unity編譯的文件,我無法添加標題。他們有擴展jsgz,memgz和datagz。它們位於我的NodeJs項目中的公共文件夾中。 我使用Express 4並設置了壓縮,但我相信這隻會壓縮現有文件進行傳輸,並且不處理已壓縮的文件。 我一直在使用app.get添加頁眉嘗試,但它似乎並沒有工作:如何添加標題到express/nodejs中的靜態gzip文件?

app.get('/blah/unitymodels/Release/widget.js', function(req, res, next) { 
    ... Check ['accept-encoding'] ... 
    if (acceptsGzip) { 
     var gzippedPath = req.url + 'gz'; 
     res.sendFile(gzippedPath, { 
      root: './public', 
      headers: { 
       'Content-Encoding': 'gzip', 
       'Content-Type': 'application/javascript' 
      } 
    } 
... 

我已經嘗試設置這樣的標題,通過使用res.set和第一設置它們然後讓下一個()調用處理響應,但每當我得到文件時,它就是沒有額外頭文件的gzip文件,瀏覽器不理解它。 我試過的方法確實添加了其他頭文件('wibble','x-timestamp'等),所以我認爲別的東西在攔截這些特定的頭文件。 我怎樣才能夠返回這些gzip文件,使瀏覽器理解他們?

+0

我想我已經這樣定自己。我使用express.static來修改頭文件,這很好。然後我在上面的app.get函數中使用了setHeaders,這似乎也起作用。希望它現在已經修復。 –

+0

你可以解釋一下靜態的@Matt_JD嗎? –

回答

1

您可以使用express-static-gzip作爲快遞中間件,如下圖所示:

/* here serves gzipped static files */ 
app.use('/my_static/zipped/', expressStaticGzip('my_static/zipped/', { 
    customCompressions: [{ 
     encodingName: "gzip", 
     fileExtension: "gz" 
    }] 
})); 

/* here serves other static files */ 
app.use('/my_static', express.static('my_static')); 
相關問題