Почему браузер не кэширует файл, даже если для etag в промежуточном ПО установлено значение true? - PullRequest
0 голосов
/ 12 марта 2020

Я новичок ie в Узле и Express. Я просматривал эту Express 'документацию по этой ссылке: https://expressjs.com/en/4x/api.html#express .stati c
В объекте опций express.static(root, [options]) есть одно свойство с именем etag и описание здесь говорит только это Включение или отключение генерации etag . Я не мог понять эту строку и, карабкаясь вокруг нее, я наткнулся на этот ответ: Кэширует ли express .stati c () файлы в памяти?
Там написано:

Если браузер видит ETag со страницей, он его кеширует. В следующий раз, когда браузер загружает страницу, он проверяет изменения номера ETag. Если файл точно такой же, как и его ETag - сервер отвечает кодом состояния HTTP 304 («не измененный») вместо повторной отправки всех байтов и сохраняет кучу пропускной способности.

Насколько я понимаю этот ответ, если etag одинаков и файлы не изменены, браузер отобразит кэшированный файл и сэкономит кучу пропускной способности.
Я попытался реализовать его с помощью этого кода:

const express = require('express');
const path = require('path');
const port = 8000;

const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(express.static('public',{
  etag: true
}));

app.get('/', function (req, res) {
    res.render('index', { title: 'Hey' })
});

app.listen(port, (err) => {
    if(err){
        console.log("ERROS: ",err);
    }
    console.log("Express server is runnig on port: ",port);
});

У меня есть index.e js файл в папке представлений и home. css файл в папке publi c.

В браузере я набрал: http://localhost:8000/, затем я продолжил проверять его, затем открыл вкладку «Сеть» и обновил страницу два-три раза. Как и ожидалось, и в соответствии с вышеупомянутым ответом, так как я не изменял файлы и etag, код состояния был 304. Но на вкладке размера он не показывает (кэш памяти) , вместо этого он дает размер и текст всплывающей подсказки гласит: xyz B передается по сети, размер ресурса: ab c B

Почему не выполняется рендеринг кэшированного файла? ИЛИ Разве это не кеширование файлов вообще? ИЛИ Это что-то не так в понимании концепции?
А что это за включение и отключение генерации etag, упомянутое на странице документации?

Заранее благодарим за любую помощь, которую вы можете оказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...