Node4-5靜態(tài)資源服務(wù)器實(shí)戰(zhàn)以及優(yōu)化壓縮文件實(shí)例內(nèi)容
瀏覽器控制臺(tái)看一下RequestHeader有一個(gè)Accept-Encoding,而RespondHeaders中也會(huì)有一個(gè)Content-Encoding和他進(jìn)行對(duì)應(yīng).
Accept-Encoding當(dāng)我們的瀏覽器發(fā)起一個(gè)文件的請(qǐng)求時(shí)告訴服務(wù)器支持哪幾種壓縮方式,也就是服務(wù)器用這幾種壓縮方式瀏覽器都能解壓,當(dāng)服務(wù)器接收到請(qǐng)求后,知道瀏覽器支持的壓縮方式,服務(wù)器就會(huì)自動(dòng)識(shí)別其中一種進(jìn)行壓縮并且告訴瀏覽器自己用了哪個(gè)方式壓縮,瀏覽器知道后就知道用哪種對(duì)應(yīng)方式解壓了


根據(jù)拓展名限制一下支持的幾鐘壓縮類型
defaultConfig.js

壓縮方法 compress,js
//壓縮的方法
/**rs 肯定需要,要知道自己需要壓縮什么 客戶端(瀏覽器支持哪幾種壓縮類型),
* req 客戶端再requestHeader中聲明的
* res 壓縮完成之后,需要告訴瀏覽器使用哪種壓縮類型壓縮,方便瀏覽器用對(duì)應(yīng)方式進(jìn)行解壓
* */
const {
createGzip,
CreateDeflate
} = require('zlib')
module.exports = (rs, req, res) => {
const acceptEncoding = req.headers['accept-encoding'];
/* 有兩種情況不能壓縮
1.瀏覽器已經(jīng)聲明不支持任何壓縮方式,拿不到這個(gè)信息
2.拿到的東西里面沒(méi)有服務(wù)器支持
*/
if (!acceptEncoding || !acceptEncoding.match(/\b(gzip|deflate)/)) {
return rs
} else if (acceptEncoding.match(/\bgzip\b/)) {
{
res.setHeader('Content-Encoding', 'gzip')
return rs.pipe(createGzip())
}
}else if (acceptEncoding.match(/\bdeflate\b/)) {
{
res.setHeader('Content-Encoding', 'deflate')
return rs.pipe(createGzip())
}
}
}
route.js 引用compress

運(yùn)行結(jié)果


如果把相關(guān)壓縮的代碼注釋掉


以上就是Node4-5靜態(tài)資源服務(wù)器實(shí)戰(zhàn)_優(yōu)化壓縮文件的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的閱讀和對(duì)腳本之家的支持。
- node靜態(tài)服務(wù)器實(shí)現(xiàn)靜態(tài)讀取文件或文件夾
- Node.js一行代碼實(shí)現(xiàn)靜態(tài)文件服務(wù)器的方法步驟
- 實(shí)戰(zhàn)node靜態(tài)文件服務(wù)器的示例代碼
- 用Nodejs搭建服務(wù)器訪問(wèn)html、css、JS等靜態(tài)資源文件
- 在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡(jiǎn)單方法
- Node.js靜態(tài)文件服務(wù)器改進(jìn)版
- 使用nodejs、Python寫的一個(gè)簡(jiǎn)易HTTP靜態(tài)文件服務(wù)器
- 如何使用Node寫靜態(tài)文件服務(wù)器
相關(guān)文章
node.js通過(guò)axios實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的方法
下面小編就為大家分享一篇node.js通過(guò)axios實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
從零學(xué)習(xí)node.js之簡(jiǎn)易的網(wǎng)絡(luò)爬蟲(chóng)(四)
簡(jiǎn)單的爬蟲(chóng)實(shí)現(xiàn)原理很簡(jiǎn)單:發(fā)送http請(qǐng)求至目標(biāo)地址獲取HTML頁(yè)面數(shù)據(jù),然后從獲取來(lái)的頁(yè)面數(shù)據(jù)中提取需要的數(shù)據(jù)保存。下面這篇文章主要介紹了利用node.js實(shí)現(xiàn)簡(jiǎn)易的網(wǎng)絡(luò)爬蟲(chóng)的相關(guān)資料,需要的朋友可以參考下。2017-02-02
NodeJS 將文件夾按照存放路徑變成一個(gè)對(duì)應(yīng)的JSON的方法
這篇文章主要介紹了NodeJS 將文件夾按照存放路徑變成一個(gè)對(duì)應(yīng)的JSON的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
async/await與promise(nodejs中的異步操作問(wèn)題)
這篇文章主要介紹了async/await與promise(nodejs中的異步操作問(wèn)題),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
關(guān)于npm install過(guò)程失敗的幾種處理方式
這篇文章主要介紹了關(guān)于npm install過(guò)程失敗的幾種處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Node.js中Bootstrap-table的兩種分頁(yè)的實(shí)現(xiàn)方法
這篇文章主要介紹了Node.js中Bootstrap-table的兩種分頁(yè)的使用方法,需要的朋友可以參考下2017-09-09
詳解Node.js利用node-git-server快速搭建git服務(wù)器
本篇文章主要介紹了詳解Node.js利用node-git-server快速搭建git服務(wù)器,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
Node.js操作redis實(shí)現(xiàn)添加查詢功能
Redis 是一個(gè)基于內(nèi)存的鍵(key)值(value)類型的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)容器,它既可以完全工作在內(nèi)存中,也可以持久化存儲(chǔ)。當(dāng) Redis 工作于持久化模式時(shí),可以將它當(dāng)作一個(gè)非關(guān)系型數(shù)據(jù)庫(kù)使用。2017-05-05
利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能
這篇文章為大家詳細(xì)介紹了如何利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能,主要實(shí)現(xiàn)簡(jiǎn)單的圖片上傳和靜態(tài)內(nèi)容的訪問(wèn),感興趣的可以了解一下2022-05-05

