亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

知識(shí)大盤(pán)點(diǎn):JS緩存機(jī)制中的五個(gè)關(guān)鍵要點(diǎn),需要具體代碼示例

導(dǎo)語(yǔ):在前端開(kāi)發(fā)中,緩存是提高網(wǎng)頁(yè)性能的重要一環(huán)。JavaScript緩存機(jī)制是指將已經(jīng)獲取的資源保存在本地,以便在后續(xù)的訪問(wèn)中能夠直接使用緩存,從而減少資源加載時(shí)間和網(wǎng)絡(luò)帶寬的消耗。本文將介紹JS緩存機(jī)制中的關(guān)鍵要點(diǎn),并提供具體的代碼示例。

一、緩存類(lèi)型

    強(qiáng)緩存

強(qiáng)緩存是指通過(guò)設(shè)置HTTP響應(yīng)頭中的Expires或Cache-Control字段來(lái)實(shí)現(xiàn)的緩存機(jī)制。當(dāng)瀏覽器請(qǐng)求一個(gè)資源時(shí),會(huì)先檢查該資源在本地是否存在緩存,如果存在且仍在有效期內(nèi),則直接使用緩存,不再發(fā)送請(qǐng)求。

示例代碼:

// 設(shè)置緩存時(shí)間為1個(gè)小時(shí)
res.setHeader('Cache-Control', 'max-age=3600');

登錄后復(fù)制登錄后復(fù)制

    協(xié)商緩存

協(xié)商緩存是通過(guò)設(shè)置HTTP請(qǐng)求頭中的If-Modified-Since或If-None-Match字段來(lái)與服務(wù)器進(jìn)行通信的緩存機(jī)制。當(dāng)瀏覽器請(qǐng)求一個(gè)資源時(shí),會(huì)先發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器根據(jù)請(qǐng)求頭中的字段和資源的最后修改時(shí)間進(jìn)行比較,如果資源未發(fā)生變化,則返回狀態(tài)碼304 Not Modified,并通知瀏覽器使用本地緩存。

示例代碼:

// 獲取請(qǐng)求頭中的If-Modified-Since字段
const ifModifiedSince = req.headers['if-modified-since'];

// 獲取資源的最后修改時(shí)間
const lastModified = fs.statSync(filepath).mtime.toUTCString();

// 比較請(qǐng)求頭中的字段與最后修改時(shí)間
if (ifModifiedSince === lastModified) {
  res.statusCode = 304; // Not Modified
  res.end();
} else {
  res.setHeader('Last-Modified', lastModified);
  // 返回資源
  res.end(file);
}

登錄后復(fù)制

二、緩存位置

    瀏覽器緩存

瀏覽器緩存是指緩存在瀏覽器本地的緩存文件。當(dāng)瀏覽器訪問(wèn)同一資源時(shí),會(huì)先檢查該資源是否存在緩存文件,如果存在則直接使用緩存,否則發(fā)送網(wǎng)絡(luò)請(qǐng)求。

示例代碼:

// 讀取緩存
const cache = localStorage.getItem('cache');

// 判斷緩存是否存在
if (cache) {
  // 使用緩存
} else {
  // 發(fā)送網(wǎng)絡(luò)請(qǐng)求
}

登錄后復(fù)制

    服務(wù)器緩存

服務(wù)器緩存是指緩存在服務(wù)器端的緩存文件。當(dāng)瀏覽器請(qǐng)求一個(gè)資源時(shí),服務(wù)器會(huì)檢查該資源是否存在緩存文件,如果存在則直接返回緩存文件。

示例代碼:

// 判斷文件是否存在
if (fs.existsSync(filepath)) {
  // 返回緩存文件
} else {
  // 發(fā)送網(wǎng)絡(luò)請(qǐng)求
}

登錄后復(fù)制

三、緩存時(shí)間控制

    緩存時(shí)間

緩存時(shí)間是指強(qiáng)緩存或協(xié)商緩存的有效期時(shí)間,可以根據(jù)需求設(shè)置不同的緩存時(shí)間。

示例代碼:

// 設(shè)置緩存時(shí)間為1個(gè)小時(shí)
res.setHeader('Cache-Control', 'max-age=3600');

登錄后復(fù)制登錄后復(fù)制

    緩存策略

緩存策略是指根據(jù)資源類(lèi)型或資源路徑設(shè)置不同的緩存策略。可以使用正則表達(dá)式或字符串匹配來(lái)實(shí)現(xiàn)不同的緩存策略。

示例代碼:

// 設(shè)置圖片資源的緩存時(shí)間為1個(gè)月
if (req.url.match(/.jpg|.png|.gif$/)) {
  res.setHeader('Cache-Control', 'max-age=2592000');
}

登錄后復(fù)制

四、緩存更新

    版本控制

版本控制是指在請(qǐng)求資源時(shí)添加版本號(hào),當(dāng)資源發(fā)生改變時(shí)更新版本號(hào)。通過(guò)更新版本號(hào)可以強(qiáng)制瀏覽器重新加載資源。

示例代碼:

<!-- 添加版本號(hào) -->
<link rel="stylesheet" href="styles.css?v=1.0">
<script src="script.js?v=1.0"></script>

登錄后復(fù)制

    強(qiáng)制刷新

強(qiáng)制刷新是指通過(guò)設(shè)置Cache-Control字段的max-age為0來(lái)告訴瀏覽器立即更新緩存。

示例代碼:

// 強(qiáng)制刷新緩存
res.setHeader('Cache-Control', 'max-age=0');

登錄后復(fù)制

五、緩存清除

緩存清除是指手動(dòng)刪除瀏覽器本地的緩存文件或服務(wù)器端的緩存文件。

示例代碼:

// 清除瀏覽器緩存
localStorage.removeItem('cache');

// 清除服務(wù)器緩存
fs.unlinkSync(filepath);

登錄后復(fù)制

總結(jié):對(duì)于前端開(kāi)發(fā)中常見(jiàn)的JS緩存機(jī)制,我們介紹了五個(gè)關(guān)鍵要點(diǎn),涉及的內(nèi)容包括緩存類(lèi)型、緩存位置、緩存時(shí)間控制、緩存更新和緩存清除。掌握這些關(guān)鍵要點(diǎn)能夠幫助我們更好地理解和應(yīng)用緩存機(jī)制,提升網(wǎng)頁(yè)性能,提升用戶(hù)體驗(yàn)。希望通過(guò)本文的介紹,能夠?qū)Ω魑蛔x者有所幫助。

分享到:
標(biāo)簽:JS 關(guān)鍵 機(jī)制 緩存 要點(diǎn)
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定