Совместное использование одного файла JavaScript несколькими доменами - PullRequest
2 голосов
/ 16 ноября 2011

Определение проблемы:

  • Сервер - это встроенная система с отсутствием доступа к Интернету .
  • Каждый сервер управляется веб-интерфейсом, который использует JavaScript.
  • У каждого сервера есть локальная копия библиотеки JQuery.
  • Клиенты (браузеры) подключаются к встроенным системам (серверам) через очень медленное соединение .
  • Клиенты имеют самые последние браузеры (HTML5, CSS3, JavaScript 1.8.5)
  • Клиенты также не подключены к Интернету.
  • Клиенты не могут получить доступ к нескольким серверам одновременно (серверы находятся в удаленных местах, и, скорее всего, клиент может получить доступ только к одному серверу и ни к чему другому, но позднее в тот же день клиент может перейти в другое место и подключиться к другому серверу. ).
  • Каждый сервер имеет IP-адрес (необязательно в том же диапазоне) и без DNS-имени .
  • Каждый раз, когда клиент подключается к встроенному серверу, он выбирает все файлы, включая огромную библиотеку JQuery (огромный = ~ 90 КБ)

Вопрос: Библиотека JQuery слишком велика для такого медленного соединения, но разовая загрузка приемлема. Однако мы не хотим, чтобы клиенты загружали его каждый раз при подключении к каждому новому серверу. JQuery на всех этих устройствах одинаков. Но, видимо, кеш браузера основан на домене. Как мы можем кэшировать библиотеку JQuery, чтобы клиенту не приходилось загружать JQuery при каждом подключении к новому серверу?

Ответы [ 4 ]

1 голос
/ 16 ноября 2011

вы можете связать его с IP в вашем теге ссылки. Сервер не должен иметь доступ к этому доступу или чему-либо еще, поэтому все клиенты будут постоянно получать jquery с одного и того же сервера, поэтому он кэшируется.

1 голос
/ 16 ноября 2011

просто ссылка на него в одном месте ...

например, если у вас есть один сервер, http://1.2.3.4/, который вы хотите обозначить как CDN, поместите в него jQuery и создайте ссылку на него в своих скриптах, используя <script src="http://1.2.3.4/jquery.min.js"></script>

0 голосов
/ 08 декабря 2011

Очевидно, что не существует стандартного способа включить JQuery в наш проект, поэтому мы решили заменить JQuery меньшей подобной библиотекой. Это варианты:

  • JQuery mobile лучше подходит для нашего проекта, так как имеет меньший размер и может выполнять практически все, что нам нужно, из JQuery.
  • Zepto.js также является другой подходящей заменой.
  • JQuip - это урезанная версия JQuery, которая может помочь нашему конкретному проекту.
0 голосов
/ 23 ноября 2011

Вот простое решение: все ваши клиенты должны отредактировать свой файл /etc/hosts (Google, где вы можете найти его в Windows) и добавить следующую строку в свою конфигурацию:

1.2.3.4 jquery-from-closest-server.com

Каждый клиент должен выяснить ближайший сервер с jQuery и заменить 1.2.3.4 его IP-адресом.

В своем HTML-коде всегда используйте ссылку http://jquery-from-closest-server.com/jquery.js

Чтобы быть в безопасности, вы можете зарегистрировать jquery-from-closest-server.com для тех клиентов, у которых есть доступ в Интернет.

Когда браузер запрашивает файл, он использует /etc/hosts для разрешения IP-адреса. Поскольку доменное имя будет одинаковым для всех встроенных устройств (изменения в IP-адресе игнорируются браузером), сценарий будет загружен один раз для всех клиентов.

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

Если это вас беспокоит (и это произойдет примерно через четыре месяца после того, как вы обнаружили первую серьезную ошибку), вот другое решение: вместо того, чтобы обслуживать HTML со встроенного устройства, распространите статическое веб-приложение (набор файлов HTML). и JavaScript), который клиент может установить на своем рабочем столе. Используйте AJAX и iframe s для замены частей статического веб-приложения данными со встроенного устройства.

Преимущества: * * тысяча двадцать-дв

  • очень быстро (вообще никаких загрузок)
  • только маленький код на встроенном устройстве
  • Простая стратегия обновления
  • Никаких взаимоблокировок при необходимости обновления встроенных устройств или приложения контроллера.

[EDIT] PS: рассмотрите возможность сжатия jQuery с помощью gzip. Это оставляет вам файл 33 КБ. Все браузеры HTML5 могут декодировать сжатые файлы, вы просто должны сообщить им, установив необходимые заголовки HTTP.

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