HTTP-сервер push для угловых модулей - PullRequest
0 голосов
/ 05 июня 2018

Все недавние и скорые обновления Angular для повышения производительности и уменьшения полезной нагрузки убедили меня, что наконец пришло время обновить наш сайт из традиционного приложения asvnet mvc.

Я делю сайт на модули, включая:отдельные модули для наших основных целевых страниц, которые доступны из объявлений Google или Facebook.Я, очевидно, хочу убедиться, что они загружаются как можно быстрее.

В прошлом я использовал HTTP-сервер, чтобы уменьшить ресурсы, необходимые для страницы, до того, как мой JavaScript включился, и id хотел сделать то же самое.Вот.

Например.Если сервер aspnet получает запрос на / producttour, тогда я хочу отправить javascript модуля 'product tour' с заголовком http, чтобы сервер мог немедленно начать его отправку.Это удаляет один сервер в оба конца для этого файла (который может быть довольно большим файлом).Я также, вероятно, хочу отправить файлы, которые, как я знаю, требуются повсюду, такие как vendor.js

Да, я понимаю, что это применимо только к первой странице, после которой вы находитесь в угловом спа-центре, и модули будут загружаться нормально.

Кажется, я не могу найти никого, кто бы говорил об этом, что меня удивляет.

  • При хешировании URL-адреса имя файла меняется каждый раз, когда я создаю его, поэтому я не знаю, как его найти.Заранее отправьте это имя в жестком коде.
  • Без хэширования URL я могу случайно загрузить устаревший код.

Моя лучшая идея - это построить Ng в index.htm с отключенным хешированием, скопировать эту страницуа затем вручную добавьте? версию к нему на стороне сервера и добавьте заголовки.

1 Ответ

0 голосов
/ 07 июня 2018

Таким образом, вопрос в основном не является специфическим для Angular, но его интерес, скорее, заключается в том, что происходит до того, как Angular фактически вступит в действие. Проблема может быть разделена на две части:

  1. Какопределить какой файл нужен (какой лениво загруженный модуль) для отправки его в заголовок ссылки?
  2. Как только файл идентифицирован, как его получить и соедините это с остальной частью приложениязагруженные модули не обязательно должны иметь эти «уродливые» хеш-имена, вы можете использовать --named-chunks и даже --output-hashing=none вместе с вашей командой ng build.Это сгенерирует довольно нормальные имена, которые вы можете использовать в качестве идентификатора, и я почти уверен, что в angular-cli возможна некоторая настройка имен в виде вишни сверху, но я оставлю это на ваше усмотрение.
  3. Теперь давайте предположим, что у вас есть этот файл непосредственно на вашем сервере приложений , и вы сможете найти его, даже если он имеет хеш очистки кэша.Для этого понадобится небольшой скрипт, который найдет его, получит имя и использует это имя для отправки заголовка ссылки.

    Или этот файл находится на CDN , где вы, скорее всего,Я не хочу, чтобы в имени файла был хэш для очистки кэша, и в этом случае его снова легко идентифицировать.Единственная проблема - кэширование, но ее можно решить, например, с помощью режимов строки запроса, как показано в этой статье Azure .

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