AJAX App JavaScript Проблема с загрузкой - PullRequest
0 голосов
/ 17 февраля 2012

Я создаю полное приложение ajax, в котором есть одна базовая страница, и любые страницы, на которые пользователь переходит в приложении, загружаются через ajax в div содержимого на странице.На базовой странице я включаю различные сценарии, которые необходимы для каждой страницы в приложении (jQuery, jQuery-UI, другие пользовательские файлы javascript).Затем на различных страницах приложения я включаю один или два сценария для каждой страницы, которые содержат логику, необходимую только для этой страницы.В каждом из этих файлов сценариев есть что-то, что выполняется на событии готовности страницы.Проблема в том, что каждый раз, когда пользователь переходит на страницу page1, загружается файл page1.js.Таким образом, если они посещают эту страницу 10 раз, этот скрипт затем загружается десять раз в их браузер.Глядя на инструменты разработчика сценариев Chrome после бега по сайту, я вижу тонны дублированных сценариев.

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

Есть липроблема с загрузкой файла JavaScript снова и снова, когда пользователь посещает одну и ту же страницу несколько раз?

Я заметил, просматривая сетевой трафик, что каждый раз, когда мы посещаем страницу, скрипт запрашивается с параметром случайного числа (/Scripts/Page1.js?_=298384892398), который вызывает принудительный запрос нафайл сценария каждый раз.Я установил параметры cache: true для метода jQuery ajaxSetup, и этот параметр удалил параметр из запроса, и, таким образом, была загружена кэшированная версия файла javascript вместо того, чтобы фактически сделать для него отдельный HTTP-запрос.Но проблема в том, что я не хочу, чтобы все запросы Ajax были кэшированы, так как содержимое постоянно меняется.Есть ли способ принудительно кэшировать только файлы javascript, но разрешить не кэшировать все другие запросы ajax.

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

Любой совет, как справиться с этой ситуацией?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

О вашем первом вопросе:

Каждый раз, когда вы загружаете файл JavaScript, весь контент проверяется браузером. Это зависит только от содержимого, если вы можете загрузить и выполнить его несколько раз подряд. Я бы не считал это лучшей практикой. ;)

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

По второму вопросу: я бы предположил, что скрипт предназначен для многократного отображения при включении его несколько раз. Чтобы дать совет о том, как не кэшировать загруженный JS, мне нужно знать, как вы загрузили код, как вы выполняете AJAX и общие настройки jQuery.

0 голосов
/ 17 февраля 2012

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

// @ sourceURL = some-script-name

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

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