1

Тема: Скрипт одновременной загрузки стилей/скриптов в <head>

Собственно я написал скрипт, но не может быть такого, чтобы он был идеальным, ибо до меня его уже написали бы (сейчас все подобные скрипты занимают не один файл размеров в не одну сотню строк). Получается, в моем есть огрехи - безопасность, неэффективность, работа через раз и т.п.
Но пока я его тестил сам, ни одного бага не выявил: страница загружается быстрее и в консоли отображается верная отладочная инфа. Мб вы меня натолкнете на мысль что в нем может быть не так?)

            var loadJavaScriptFiles = {
                jQuery : "ljs",
                core : "js",
                common : "tjs",
            }
            
            function setCallbacks(fileref, fname) {
                fileref.onload = function() {
                    console.log(fname + " loaded successfully");
                    if (fname == "common.js") {
                        try {
                            common();
                        } catch(e) {
                            console.log(e + " - wait for loading jQuery.js");
                        }
                    }
                    if (fname == "jQuery.js") {
                        try {
                            common();
                        } catch(e) {
                            console.log(e + " - wait for loading common.js");
                        }
                    }
                };
                fileref.onerror = function() {
                    console.log("Some error occurred with loading " + fname);
                };
            }

            function dynamicLoad(filesArray){
                var i = 0
                var fname = new Array;
                var fileref = new Array;
                var fileSRC = {
                    ljs : "engine/javascript/library/",
                    js : "engine/javascript/",
                    tjs : "templates/ru/defalut/javascript/",
                    css : "engine/pages/css/",
                    tcss : "templates/ru/defalut/css"
                };
                for (var key in filesArray) {
                    var filetype = filesArray[key];
                    var fileName = key;
                    if (filetype=="js"|| filetype=="ljs" || filetype=="tjs") {
                        fileref[i]=document.createElement('script');
                        fileref[i].setAttribute("type","text/javascript");
                        fileref[i].setAttribute("src", fileSRC[filetype] + fileName + ".js");
                        fname[i] = fileName + ".js";
                    } else 
                    if (filetype=="css" || filetype=="tcss"){
                        fileref[i]=document.createElement("link");
                        fileref[i].setAttribute("rel", "stylesheet");
                        fileref[i].setAttribute("type", "text/css");
                        fileref[i].setAttribute("href", fileSRC[filetype] + fileName + ".css");
                        fname[i] = fileName + ".css";
                    };
                    if (typeof fileref[i]!="undefined") {
                        document.getElementsByTagName("head")[0].appendChild(fileref[i]);
                    };
                    i = i + 1;
                };
                for (i = 0; i<fileref.length; i++) {
                    setCallbacks(fileref[i], fname[i]);
                };
            };

dynamicLoad(loadJavaScriptFiles);

2

Re: Скрипт одновременной загрузки стилей/скриптов в <head>

Этот скрипт постоянно подгружает внешние скрипты и стили, или кеширует их? Проверьте этот момент.

3

Re: Скрипт одновременной загрузки стилей/скриптов в <head>

Hanut сказал:

Этот скрипт постоянно подгружает внешние скрипты и стили, или кеширует их? Проверьте этот момент.

Кеширует...

4

Re: Скрипт одновременной загрузки стилей/скриптов в <head>

А то что кеширует это плохо? Ну тогда можно например после загрузки скрипта выводить время в микросекундах, например: jquery.js?*тут время*
Это отменит кеш...

5

Re: Скрипт одновременной загрузки стилей/скриптов в <head>

То что кеширует - это хорошо. Просто следует заранее предусмотреть механизм сброса кеша, например при обновлении версии jQuery.

Посмотрите скорость загрузки страниц через профилирование для страниц с динамической подгрузкой и статической. Не всегда есть смысл делать подгрузку динамически.

6

Re: Скрипт одновременной загрузки стилей/скриптов в <head>

Скорость загрузки со скриптом выше примерно в 2 раза, на моем сайте это на 2 секунды...