1

Я пытаюсь выяснить способ автоматического создания файла манифеста ApplicationCache из всех файлов HTML, CSS, JavaScript и изображений, используемых нашим сайтом.Найти все загруженные файлы на веб-сайте для создания манифеста ApplicationCache

Нам это нужно, потому что нам необходимо поддерживать автономное использование веб-сайта. Точнее, автономное использование ArcGIS API для JavaScript webapp.

Мы не используем сервис-работников вместо ApplicationCache, потому что поддержка iOS является критическим требованием, а работники служб вообще не поддерживаются в iOS, в любом браузере.

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

Этот инструмент, ManifestR, очень близко: http://westciv.com/tools/manifestR/ , но есть две проблемы с ним:

1- Это не обрабатывает URL-файла изображения, найденные в CSS файлах должным образом. Например, если он находит url (../ images/myimage.png), он добавит относительную ссылку ../images/myimage.png непосредственно в файл манифеста вместо добавления не относительной ссылки, например, www.mysite.com/ изображения/myimage.png.

2- В нем нет списка скриптов, загружаемых через dojo.require (модули AMD).

Я думаю использовать аналогичный код, чтобы исправить эти проблемы и скомпилировать список файлов. Я уже вижу, как исправить # 1, но не могу понять, как исправить # 2.

Итак, используя JavaScript, как я могу найти список всех URL-адресов скриптов, используемых веб-сайтом, а не только те загруженные теги прокси (найденные в объекте window.scripts), но и загруженные с использованием модулей AMD?

В принципе, я хочу скомпилировать тот же список, который Chrome показывает мне для веб-сайта в панели «Источники».

Ex:

enter image description here

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

Но я хотел спросить здесь сначала, возможно, я пропустил инструмент сценария, который уже делает это? Или, может быть, мой план не очень хорош?

Благодаря

+0

Я обнаружил, что могу получить список всех загруженных модулей в требовании.модули – greenkarmic

+0

Еще лучше, я обнаружил, что могу получить список всех ресурсов, загружаемых через API синхронизации времени. Сначала задайте размер буфера с помощью performance.setResourceTimingBufferSize (some_value); затем используйте window.performance.getEntriesByType ('resource'), чтобы получить список файлов. Гораздо проще. – greenkarmic

ответ

1

Я никогда не использовал ApplicationCache для ArcGIS API для приложений JavaScript, но я бы рекомендовал первый обслуживать a custom Dojo build of your application, чтобы расслоении ваш код в один или несколько слоев строить. Если вы правильно настроили сборку Dojo (не малый подвиг), вы должны знать точные сценарии, которые потребуются.

Кроме того, я подозреваю, что как только вы выясните, как получить список скриптов, у вас могут возникнуть особые соображения, чтобы заставить загрузчик Dojo AMD использовать кешированные файлы. См.: dojo and the offline application cache

Удачи.

+1

Да, коллега также предложил то же самое, создать собственный набор и только кешировать в кеш приложения, а не весь список модулей и их зависимости. Я думаю об этом позже, но сейчас это не обязательно, поскольку он работает с полным списком файлов, которые я получил из API-интерфейса ресурса. Он работает, и у меня есть другие проблемы, связанные с автономностью (например, имитация ответов на запросы сервера и кэширование фрагментов карты). Что касается загрузки модулей из ApplicationCache, я ничего не сделал, браузер уже знает, чтобы получить их из кеша, если я в сети. Благодаря! – greenkarmic

Смежные вопросы