Как надежно загрузить необходимые файлы JavaScript? - PullRequest
3 голосов
/ 24 августа 2011

Я столкнулся с проблемой, когда из-за проблем с интернет-соединением некоторые из необходимых файлов JavaScript не загружаются.Событие onload body запускается, однако классов, необходимых для логики страницы, нет.

Еще одна проблема, которую я хочу решить, заключается не в веб-сайте, а в веб-приложении, в котором нет изображений или CSS-файлов.Просто представьте код JavaScript, работающий в iframe.Таким образом, у меня проблемы только со скриптами.

Вот мои идеи, как это исправить, пожалуйста, прокомментируйте / исправьте меня, если я ошибаюсь:

  1. Запутывайте и объединяйте файлы, когдапри нажатии кнопки «жить», чтобы общий размер файлов был уменьшен, и появилась задача надежно загрузить 1 файл
  2. Включить сжатие gzip на сервере.Таким образом, полученный размер файла будет намного меньше
  3. Установите для этого файла надлежащие заголовки кэша, чтобы после загрузки он был кэширован в браузер / прокси-сервер
  4. Наконец, даже имея все это, можно былобыть в том случае, если файл не будет загружен.В этом случае я планирую загрузить этот файл динамически из JavaScript, как только страница загрузится.Будет логика «Повторить неудачную загрузку» с максимум 5 попытками, например

Любые другие идеи?

Ответы [ 4 ]

1 голос
/ 24 августа 2011

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

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

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

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

Для меня это самый важный момент.

Кроме того, вы уверены в возможности повторного подхода? Это вызывает больше запросов к серверу. Если соединение медленное или медленное, то может быть лучше вообще не запускать сценарий, особенно если учесть, что пользователи могут тратить мало времени на страницу и им нужно только быстрое чтение содержимого. Кроме того, в соединении медленно, сколько времени вы бы установили на тайм-аут? Что делать, если скрипт загружается во время истечения времени ожидания и вы повторите попытку? Как вы можете эффективно определить количество времени и «медлительность» соединения?

EDIT

Вы пробовали head.js ? Плагин, предназначенный для максимально быстрой загрузки скриптов, может быть, он поможет.

1 голос
/ 24 августа 2011

1 - исправьте, но дважды проверьте, не перекрываются ли функции JavaScript из разных файлов.
2 - исправьте - это должно быть всегда.
3 - исправьте, но браузер все равно попытается получитьHTTP 304: Not Modified код с сервера.
4 - исправьте, рассмотрите возможность возврата к noscript версии веб-сайта после 1 или 2 неудачных попыток (5 - слишком много).

1 голос
/ 24 августа 2011

Лично я не думаю, что стоит попытаться переделать логику браузера. Что делать, если изображения на вашей странице не загружаются? Что делать, если главная страница не загружается. Если у пользователя есть проблемы с интернет-соединением, ему нужно исправить эти интернет-проблемы. Многие вещи не будут надежно работать, пока не заработают.

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

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

1 голос
/ 24 августа 2011

Если сценарию «Повторить» не удается получить необходимые зависимости, перенаправьте его на версию сайта «без сценария», если она доступна.Или попытайтесь создать изящно унизительную страницу, поэтому даже если все этапы не пройдены, сайт все еще можно использовать.

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