Ну если так хочется, ловите. Disclaimer: многа букаф ;-)
=======================================
Открываем fullajax.ru/temp/asyncjs/fullajax1.html и лезем в Firebug. Оппа! У window появился ряд новых свойств, в том числе:
SRAX (ну это понятно, точка входа),
a (это что?),
abort, abortData, arrayIndexOf, arrayRemoveOf, dax, error, get, getData, getInterface, go, hax, id, info, log, post, postData, warn.
Кроме этого, Firebug ябедничает, что некоторые функции не всегда возвращают значение, есть ряд undeclared variables и ряд undefined property.
Теперь заглянем в код. Качаем архив с сырцами и открываем fullajax.js.
Таакс… Хорошо… Хорошо… оппа, модификация String.prototype — кто разрешил?
String.prototype.trim() = ресурсоемкое решение.
String.prototype.replaceAll() = элегантно!
String.prototype.endWith() = борщ! + можно сделать эффективнее.
hax():
if (options.nohistory == null) options.nohistory = options.noHistory; // это типа для обратной совместимости? ;-)
get() — в условии if — ошибка, можно написать это с одним return.
post() — копипаст с get().
dax() — копипаст с hax().
SRAX.extend():
var overwrite = !skipexist; // прикольно звучит, да?
===================
SRAX.init():
— var n = 'addEventsListener';
// пфф… опять таки, кто разрешил лезть в document?
===================
$.Default.initCPLNLS() = копипаст с $.Default.initCPLNLL()
IE_XHR_ENGINE: ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'] = зачем это в таком явном виде? Завтра ожидается новый XMLHTTP от MS?
delHost() = лишний if, лишнее присваивание
paintHtml(), paintHtml2() == когда будет paintHtml3()?
===================
DATAThread(), HTMLThread()
— 1. Копипаст в 200+ строчек!!!
2. _this = this. // Так и есть, автор не умеет пользоваться замыканиями. А все потому что Java.
3. борщ в коде, например:
if (!options.url && options.src) options.url = options.src;
if (!options.cb && options.callback) options.cb = options.callback;
if (options.cbo == null && options.callbackOps != null) options.cbo = options.callbackOps;
if (options.anticache == null && options.nocache != null) options.anticache = options.nocache;
if (overwrite) ops = {};
$.extend(ops, options);
if (ops.async == null) ops.async = true;
ops.url = $.delHost(ops.url);
this.options = ops;
return _this;
===================
Дальше смотреть не стал — зрение дороже. Код абсолютно нечитабелен, приватные по смыслу свойства и методы торчат снаружи SRAX и даже в window — кто не спрятался, я не виноват!
Резюме: курсовая работа студента 3-го курса. Выполнена на крепкую троечку, не более того. ;-)
На одном железе далеко не уедешь. Как показывает практика, правило «плюс один сервер» без надлежащей программной прослойки работает в очень узком диапазоне.
> Упаковка в один файл и gzip никак не противоречат асинхронной загрузке, а наоборот ее улучшают как и в простом случае.
То есть вы хотите сказать, что в браузере загрузка N файлов в M потоков в рамках одного домена выгоднее загрузки 1 файла в один поток? Вы действительно так думаете?
> если вам что-то не понятно в коде, это не значит что это неправильно.
Вас публично ткнуть в ваш же код, чтобы вам стыдно стало?
> вы не поняли цель статьи
Цель статьи, как и проекта лежит на ладони — попытка пиара на теме сомнительной ценности с ужасным качеством реализации. Надо быть слепым чтобы не увидеть messages вашего сайта: «Смотрите, какие мы молодцы! Мы профи! Мы уникальны! Купите нас скорее!»
Верстают под IE6, потому что есть пользователи IE6, которые существуют, потому что есть сайты, которые работают под IE6. Кто-то должен сделать break в этом infinitive loop, за что иконзе респект и уважуха.
1) применимость строго в рамках домена страницы (потому как XHR aka AJAX) — соответственно ценность асинхронной загрузки JS снижается, поскольку все используемые JS можно упаковать в один файл, пройтись yuicompressor и включить gzip на сервере. Точка.
2) руки авторов. Глянул в код — первые 100 строчек хорошо, а дальше — тихий ужас. Использовать такое в коммерческих проектах — большой риск. Чувствуется опыт программирования в PHP и отсутствие опыта программирования в JS.
А вцелом, продолжайте. Может что-то и вырастет из этого начинания ;-)
=====
0 | 0 1
1 | 1 0
таки 2x2
=======================================
Открываем fullajax.ru/temp/asyncjs/fullajax1.html и лезем в Firebug. Оппа! У window появился ряд новых свойств, в том числе:
SRAX (ну это понятно, точка входа),
a (это что?),
abort, abortData, arrayIndexOf, arrayRemoveOf, dax, error, get, getData, getInterface, go, hax, id, info, log, post, postData, warn.
Кроме этого, Firebug ябедничает, что некоторые функции не всегда возвращают значение, есть ряд undeclared variables и ряд undefined property.
Теперь заглянем в код. Качаем архив с сырцами и открываем fullajax.js.
Таакс… Хорошо… Хорошо… оппа, модификация String.prototype — кто разрешил?
String.prototype.trim() = ресурсоемкое решение.
String.prototype.replaceAll() = элегантно!
String.prototype.endWith() = борщ! + можно сделать эффективнее.
hax():
if (options.nohistory == null) options.nohistory = options.noHistory; // это типа для обратной совместимости? ;-)
get() — в условии if — ошибка, можно написать это с одним return.
post() — копипаст с get().
dax() — копипаст с hax().
SRAX.extend():
var overwrite = !skipexist; // прикольно звучит, да?
===================
SRAX.init():
— var n = 'addEventsListener';
$[n]($.HTMLThread);
$[n]($.History);
$[n]($.DATAThread);
// конструкция интересная, но наводит на мысль о незнании или непонимании автором концепции замыканий.
document._write = document.write;
document._writeln = document.writeln;
// пфф… опять таки, кто разрешил лезть в document?
===================
$.Default.initCPLNLS() = копипаст с $.Default.initCPLNLL()
IE_XHR_ENGINE: ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'] = зачем это в таком явном виде? Завтра ожидается новый XMLHTTP от MS?
delHost() = лишний if, лишнее присваивание
paintHtml(), paintHtml2() == когда будет paintHtml3()?
===================
DATAThread(), HTMLThread()
— 1. Копипаст в 200+ строчек!!!
2. _this = this. // Так и есть, автор не умеет пользоваться замыканиями. А все потому что Java.
3. борщ в коде, например:
if (!options.url && options.src) options.url = options.src;
if (!options.cb && options.callback) options.cb = options.callback;
if (options.cbo == null && options.callbackOps != null) options.cbo = options.callbackOps;
if (options.anticache == null && options.nocache != null) options.anticache = options.nocache;
if (overwrite) ops = {};
$.extend(ops, options);
if (ops.async == null) ops.async = true;
ops.url = $.delHost(ops.url);
this.options = ops;
return _this;
===================
Дальше смотреть не стал — зрение дороже. Код абсолютно нечитабелен, приватные по смыслу свойства и методы торчат снаружи SRAX и даже в window — кто не спрятался, я не виноват!
Резюме: курсовая работа студента 3-го курса. Выполнена на крепкую троечку, не более того. ;-)
P.S. ping == pause?
Программисты на Схеме покрутили пальцем у виска :)
То есть вы хотите сказать, что в браузере загрузка N файлов в M потоков в рамках одного домена выгоднее загрузки 1 файла в один поток? Вы действительно так думаете?
> если вам что-то не понятно в коде, это не значит что это неправильно.
Вас публично ткнуть в ваш же код, чтобы вам стыдно стало?
> вы не поняли цель статьи
Цель статьи, как и проекта лежит на ладони — попытка пиара на теме сомнительной ценности с ужасным качеством реализации. Надо быть слепым чтобы не увидеть messages вашего сайта: «Смотрите, какие мы молодцы! Мы профи! Мы уникальны! Купите нас скорее!»
1) применимость строго в рамках домена страницы (потому как XHR aka AJAX) — соответственно ценность асинхронной загрузки JS снижается, поскольку все используемые JS можно упаковать в один файл, пройтись yuicompressor и включить gzip на сервере. Точка.
2) руки авторов. Глянул в код — первые 100 строчек хорошо, а дальше — тихий ужас. Использовать такое в коммерческих проектах — большой риск. Чувствуется опыт программирования в PHP и отсутствие опыта программирования в JS.
А вцелом, продолжайте. Может что-то и вырастет из этого начинания ;-)
WTK C++: 12803.02 r/s
Scheme: 9957.43 r/s
Забавно, при увеличении числа конкурентных запросов, ваш пример HelloWorld начинает затыкаться, вероятно на моменте уничтожения тредов:
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 1
90% 1
95% 19
98% 21
99% 21
100% 2106 (longest request)
Поэтому бенчмарк со 100 конкурентами можно считать невалидным. Но пул тредов определенно нужен.