HTTP2 Push- размещение тегов скрипта в res.end

После прочтения статьи HTTP2 с использованием модуля Speedy NPM у меня возник вопрос.

Преимущество HTTP2 push заключается в том, что браузер кэширует ресурсы до того, как браузер запрашивает их.

В этом примере:

spdy.createServer(options, function(req, res) {
  // push JavaScript asset (/main.js) to the client
  res.push('/main.js', {'content-type': 'application/javascript'}, function(err, stream) {
    stream.end('alert("hello from push stream!")');
  });

  // write main response body and terminate stream
  res.end('Hello World! <script src="/main.js"></script>');
}).listen(443);

Что значит <script src="/main.js"></script> на самом деле заставить браузер делать в res.end('Hello World! <script src="/main.js"></script>')?

И если index.html имеет <script src="/main.js"></script> внутри него, зачем помещать его в res.end('Hello World! <script src="/main.js"></script>')?

1 ответ

res.end('Hello World! <script src="/main.js"></script>'); отправляет очень минимальную веб-страницу. (Это отсутствует <html><head><body> etc..., потому что это простой пример.) Это выглядит так:

Hello World!
<script src="/main.js"></script>

На веб-странице отображается "Hello World!" но вы не увидите <script> тег предоставлен. Браузер анализирует "веб-страницу", обрабатывает ссылку на main.js и обнаруживает, что уже получил этот файл (из .push). Наконец, этот скрипт выполняется и открывает alert(),

main.js был предварительно отправлен даже до того, как контент "веб-страницы" был доставлен, это res.push('/main.js',...),

Другие вопросы по тегам