С SPDY push, есть ли смысл в заголовках с истекшим сроком давности?

Насколько я понимаю, в SPDY push сервер обслуживает документ HTML, просматривает его перед отправкой и решает, что мне нужны ресурсы images/css X Y и Z, поэтому отправляет их также.

Как он знает, чтобы не беспокоить, если они уже кешируются моим браузером? Или нет смысла пытаться кэшировать статические ресурсы, если ваши клиенты используют браузеры spdy/3?

(Очевидно, не каждый клиент будет, но я заинтересован в этом случае)

2 ответа

Решение

Согласно ресурсам на сайте разработчика Chromium, это один из недостатков. Сервер не может знать, есть ли у клиента ресурс, поэтому это может быть потрачена впустую.

Источник: http://www.chromium.org/spdy/link-headers-and-server-hint

Если вам действительно нужно оптимизировать время загрузки первой страницы:

  • Сгенерируйте сигнатуру (подстроку хеша md5/sha) всех ваших статических файлов начальной загрузки, необходимых при первой загрузке страницы. Обычно это только базовые css + js для начальной загрузки. С этого момента обычно js загружает данные (особенно из приложений, насыщенных клиентом, поэтому вам не понадобится загрузка сервера, и клиенты будут использовать кеш соответствующим образом)
  • Установите длительный cookie-файл "bootstrap-version" для подписи версии начальной загрузки.
  • Когда клиент запрашивает страницу:

    • если файл cookie начальной загрузки не обновлен или отсутствует, инициируйте отправку на сервер файлов начальной загрузки.
    • В противном случае предположим, что клиент кэшировал их (возможно, нет, что приведет к небольшой регрессии, но в 99% случаев это произойдет)

Таким образом, вы достигнете очень высокой эффективности, и загрузка первой страницы будет выглядеть как повторное посещение с кешем из-за загрузки сервера.

Реализации Go и Node Spdy позволяют вам играть на сервере. Модули AFAIK nginx/apache пока не имеют этой функции. Я надеюсь, что они скоро добавят это на основе предоставленных приложением заголовков или подобного.

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