Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   динамическое подключение js (https://javascript.ru/forum/events/23632-dinamicheskoe-podklyuchenie-js.html)

shurup777 30.11.2011 14:30

динамическое подключение js
 
Пол дня уже ищу решение проблемы, не могу найти...
Суть такова: необходимо после загрузки страницы динамически подгружать js код. Тут в общем проблем нет, хоть его ажаксом получай, eval-ом обрабатывай, хоть в страницу с тегом script пихай, все работает отлично. Но, тк ожидается хорошая нагрузка на ресурс, хотелось бы кэшировать все это дело.
Вот тут проблема и вылезает. Если я создаю в заголовке <script src=...>, где src кажет на мой скрипт, он подключается, выполняется, НО! в его url все браузеры добавляют параметр вида "?_=12345...", где число рандомное. Сделано это, я так понимаю, специально, чтобы скрипт не кэшировался (при этом когда так же подключаются к примеру css-ки, ничего подобного не замечаю). И тк это делается во всех браузерах, я так подозреваю, что это должно быть оговорено в каких-нибудь стандартах, но никакой информации чета по этому поводу не могу найти.
Так вот вопрос, как сообщить браузеру, что я все же хочу его кешировать? В заголовке Last-Modified отправляю, но он похоже по url-лу сам решает, что нужно заново запрашивать файл.
Ну и еще, при всем этом сам тег <script> в DOM-е документа тоже не появляется, но ет уже не столь важно, код исполнился, больше мне от него особо ничего не нужно, но все же, для полноты картины, не помешал бы...

Kolyaj 30.11.2011 14:40

Цитата:

Сообщение от shurup777
в его url все браузеры добавляют параметр вида "?_=12345...", где число рандомное.

Это не браузеры добавляют, а функция, которой вы создаёте этот script.

Цитата:

Сообщение от shurup777
Ну и еще, при всем этом сам тег <script> в DOM-е документа тоже не появляется

Появляется.

shurup777 30.11.2011 14:48

ну код такой:

log($('head script').length);
var code = '<script type="text/javascript"'
    + ' src="' + url + '"'
    + '></script>\n';
$('head').append(code);
log($('head script').length);


в лог в обоих случаях одно и то же кол-во тегов возвращает, следовательно, если я правильно понимаю, тег явно не добавился (но код скрипта из него нормально выполнился), ну и мой url содержит строку вида "/_blockjs/borda", а в отладчиках браузеров, и на сервере кажет строку вида "http://tux.nsk.ru:8080/_blockjs/borda?_=1322649986270"

shurup777 30.11.2011 15:01

хм, неужель ет jquery ет добавлял, ща на чистом жаваскрипте сделал, вроде нормально вставилось, но загрузку скрипта не сделал, ладно, спасибо, причина ясна, буду копать дальше :)


Часовой пояс GMT +3, время: 13:47.