2017-02-06 17 views
1

Я понимаю, что для таких активов, как изображения, существует связанный с ними src, что означает, что браузер проверяет дату истечения срока действия этого актива, прежде чем делать новый запрос для этого актива в src, чтобы снова загрузить этот актив, а затем отобразить его на страницу. Как это работает со сценарием или модулем, таким как React? Если это CDN, браузер сначала загружает скрипт, а затем запускает его в первый раз, когда он сталкивается с скриптом? И затем каждый раз после этого, когда он снова нуждается в этом скрипте, он просто загружает его из своего кеша (вместо того, чтобы загружать его снова из источника) и запускать его? Это то же самое, что происходит, если у вас есть React как модуль узла?Как получить скрипты и модули?

ответ

1

Это очень большая тема, основной ответ заключается в том, что браузеры будут кэшировать активы, как вы им рассказываете. Вы отмечаете, что изображения имеют даты истечения срока действия, эти даты устанавливаются в заголовках HTTP, отправленных сервером. Вы можете установить те же заголовки для javascript и любых других файлов, которые вы запрашиваете с сервера, и браузер будет кэшировать их одинаково.

После получения ресурса javascript (с сервера или кеша) браузер анализирует и запускает ваш javascript.

Узловые модули живут в узловой земле. Обычно, прежде чем вы сможете использовать код в node_modules в браузере, вы запускаете его с помощью инструмента, такого как webpack или browersify. Эти инструменты объединяют ВСЕ код (ваше приложение + реагируют + все остальное) в один файл (обычно), который затем подается в браузер. Браузер ничего не знает о node_modules. Он просто разбирает и запускает предоставленный javascript.

Один связанный файл кэшируется на основе заголовков, с которыми он был отправлен. CDN (в основном) - это просто специальный сервер, оптимизированный для обслуживания активов быстро.

+0

Спасибо! Так было бы правильно сказать, что независимо от кэширования все активы (изображения и скрипты) должны запускаться каждый раз, когда вы переходите на другой URL-адрес, даже если это страницы с одного и того же хоста? Например, если вам нужно изображение утки и сценарий реагирования для запуска при посещении www.examplepage.com/cups и тех же самых активов при посещении www.examplepage.com/cup/1, будут ли эти активы запускаться дважды? – stackjlei

+1

Правильно! Если вы думаете об этом, javascript нужно запустить, чтобы на самом деле что-либо сделать. Даже регистрация прослушивателей событий и такие потребности должны начинаться с какой-то императивной процедуры. –