Поддерживает ли Express.static() кеш файлы в памяти?

В ExpressJS для NodeJS мы можем сделать следующее:

app.use(express.static(__dirname + '/public'));

для обслуживания всех статических файлов CSS, JS и изображений. Мои вопросы таковы:

1) Когда мы это делаем, Express автоматически кэширует файлы в памяти сервера или читает их с жесткого диска каждый раз, когда обслуживается один из ресурсов?

2) Когда мы это делаем, Express, используя ETag по умолчанию, сохраняет ресурсы на клиентском жестком диске или только в клиентской памяти?

Ответ 1

  • Статическое промежуточное ПО не кэширует сервер. Он позволяет вам выполнять два метода кеширования на стороне клиента: ETag и Max-Age:

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

app.use(express.static(myStaticPath, {
  etag: false
}))

Максимальный возраст будет устанавливать максимальный возраст на некоторое количество времени, поэтому браузер будет запрашивать этот ресурс только через один день.

app.use(express.static(myStaticPath, {
  maxage: '2h'
}))

Для получения дополнительной информации вы можете прочитать эту статью

  1. По умолчанию это на жестком диске, но кто-то может использовать что-то вроде this