09.07.2013, 21:49
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Объясняю. Если скрипт находится в <head> , то страница не отобразится пока скрипт не будет загружен. Очень часто на сайте подключают локальную копию jQuery, к тому же без gzip-сжатия. Плюс три-четыре плагина, иногда вобще ввиде сорцов. В итоге имеем до 200 кб объема.
Пару милисекунд говоришь? В моем регионе многие сидят на 128кбит/с, это 12секунд времени. На более продвинутом тарифе - 512кбит/с это будет три секунды. А еще прибавь объем страницы + объем стилей + пинг на нераспараллеливаемые запросы - это все тоже нужно ждать. А теперь возьми в руки мобилу или хотя бы планшет и открой тот же javascript.ru. Пару милисекунд открывается, да? И это хорошо если 3G ловит. Белый экран ожидания на мобиле - это чаще всего заслуга скриптов, любезно засунутых в <head>. Ты можешь считать как хочешь. Я считаю так как вижу ситуацию со своей стороны.
Подробнее тут или вот нашел на javascript.ru перевод: http://javascript.ru/optimize/perfor...ules#js_bottom . Вот статья на сайте по оптимизации: http://webo.in/articles/habrahabr/56...ng-javascript/
Насчет валидности. Да, мне не стоило давать ссылку на валидатор и говорить слово "валидность". Вот спецификация, определяющая что атрибут type необязателен. Вот рекомендация от Google не указывать атрибут type. Или тут на русском.
|
|
09.07.2013, 21:54
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Что касается ExtJS то там отображать тупо нечего, ибо весь UI рендерится скриптом. А vk - крайне сомнительный пример. На хабре уже однажды обсуждали качество этого сайта. Речь тогда началась с того, что все строки локализации хранятся как глобальные переменные. Мнооого глобальных переменных. Такой подход однозначно намекает что автор сего - юный студент, зарабатывающий себе на бухло и бомжпакеты.
|
|
09.07.2013, 23:08
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
danik.js, опять таки.. сегодня js очень популярен и страницы на сайтах не будут корректно работать без js. и бывает такое, что все таки приходится ждать пока страница полностью не загрузится где бы js не находился, в хидерах или в бодях. Ладно, бывают такие что и можно обойтись без js.. Вы сказали, 200кб либы памяти, это не так уж и много, ибо картинок бывает по объему (кб) куда больше.. тогда давайте затронем еще тему о мобильной версии сайта (если заказчик уважает своего клиента), где нет лишнего js, картинок и прочей бурды...
цитата: "В моем регионе многие сидят на 128кбит/с,"...
ответ: Ну при такой политике давайте вообще откажемся от js дабы всех удовлетворить и в конце придем в каменный век...
Про вконтакте..
цитата: "крайне сомнительный пример. На хабре уже однажды обсуждали качество этого сайта"
ответ: хотите сказать одноклассники лучше??
цитата: "Такой подход однозначно намекает что автор сего - юный студент, зарабатывающий себе на бухло и бомжпакеты."
ответ: Этот, как вы сказали, юный студент зарабатывает миллионы.. А сколько зарабатываешь ты??? Я думаю он поумней тебя (без обид)
короче. я с вами конечно согласен, что в какой то мере это и решит проблему, но сайты из за этого все равно идеальными не станут
|
|
09.07.2013, 23:10
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
кстати, причем тут стили?? даже если их поместим в конец, то страница то загрузится.. но отображаться она то будет все равно <криво> пока не загрузятся цсс...
|
|
09.07.2013, 23:13
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
skrudjmakdak,
Да ей богу, как то Вы слишком лично воспринимаете, - нужно быть отстраненнее, и пытайтесь воспринять как инфу к размышлению, но не наезд на самолюбие
Вона на хабре, ежли так воспринимать все спичи - так вообще в гуно изведут за пару выложенных строк.
|
|
09.07.2013, 23:17
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
Deff, а я в споре не вижу ничего плохого. Вы знайте такое: в споре рождается истина. из нее мы оба вынесем выводы.. в чем здесь плохого???
|
|
09.07.2013, 23:18
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
Deff, покритикуйте меня, если хочецо)) я буду не против
|
|
10.07.2013, 06:49
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от skrudjmakdak
|
Ну при такой политике давайте вообще откажемся от js дабы всех удовлетворить и в конце придем в каменный век
|
Какой каменный век? Ты о чем? Нужно просто опустить скрипты из <head> в конец <body>. В большинстве случаев это делается безболезненно.
Насчет некорректности работы сайта - это не так. JS в 90% случаев необходим для интерактивности, коей не последует в первые же секунды открытия страницы. Вместо созерцания белой страницы юзер может ознакомиться с содержимым, а к моменту когда нужна будет интерактивность - скрипты уже подгрузятся. Что касается картинок, то ты упустил такой момент что их загузка не блокирует отображение страницы. Кстати на качественном сайте будут обязательно прописаны width/height картинок, чтобы в процессе загрузки сайт не скакал.
Сообщение от skrudjmakdak
|
хотите сказать одноклассники лучше??
|
Из чего это следует? Из отсутствия с твоей стороны каких либо весомых аргументов?
Сообщение от skrudjmakdak
|
Этот, как вы сказали, юный студент зарабатывает миллионы
|
Ага, ты че, вправду думаешь Павлик Дуров сидит и кодит себе свой вконтактик, да?
Сообщение от skrudjmakdak
|
короче. я с вами конечно согласен, что в какой то мере это и решит проблему, но сайты из за этого все равно идеальными не станут
|
Сайты не станут идеальными если включить gzip (пять минут, потраченных на настройку даст эффект сжатия текстовых ресурсов в 3-5 раз), настроить минимизацию, оптимизировать кэширование (поможет уменьшить число повторных запросов в разы), использовать серверные оптимизации.
Перенос скриптов вниз (2 минуты затраченного времени) позволит отобразить страницу раньше на 0.5 - 5 с. Так что незачем все это делать. Ты правильный вывод сделал, да.
|
|
10.07.2013, 08:40
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
Сообщение от danik.js
|
Сайты не станут идеальными если включить gzip
|
Но трафик существенно сократится, как вы сказали в 3-5 раз..
Сообщение от danik.js
|
Ага, ты че, вправду думаешь Павлик Дуров сидит и кодит себе свой вконтактик, да?
|
нет конечно! ему что, больше заняться нечем? но кодить, я думаю, он умеет
|
|
10.07.2013, 12:56
|
Новичок на форуме
|
|
Регистрация: 09.07.2013
Сообщений: 4
|
|
Ребят, спасибо вам большое за помощь! И за оптимизационные моменты.
Только вот у меня снова проблема возникла...
У меня эта форма:
<FORM METHOD = "POST" ACTION = "" id = "setForm1">
IP Adrees:
<INPUT NAME = "IP" ID = "_ip" TYPE = "TEXT" VALUE = "<?php echo $settings [0];?>" ><br>
Subnet Mask:
<INPUT NAME = "MASK" ID = "_mask" TYPE = "TEXT" VALUE = "<?php echo $settings [1];?>" ><br>
VLAN Name:
<INPUT NAME = "VLAN" ID = "_vlan" TYPE = "TEXT" VALUE = "<?php echo $settings [2];?>"><br><br>
<INPUT TYPE="submit" VALUE="Save" onclick = "changeIP()">
<input type="submit" value="Default" onclick="resetIP()">
</FORM>
Вначале работала без JS и просто отправляла по ACTION в новый php файл данные, все работало.
Но мне понадобилось теперь после использования php-скрипта возвращаться на эту же страницу, поэтому я изменил форму так, как показано выше. Пытаюсь выполнить changeIP(), но параметры либо не передаются, либо неправильно передаются, я уже голову сломал, думая, почему...
вот скрипт:
<script language="JavaScript">
var req = Create();
function Create() {
if(navigator.appName == "Microsoft Internet Explorer") {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
req = new XMLHttpRequest();
}
return req;
}
function changeIP() {
var ip = document.getElementById('_ip');
var mask = document.getElementById('_mask');
var vlan = document.getElementById('_vlan');
var ipad = document.getElementById('curIP');
req.open('POST', 'telnetChange.php' , true );
req.onreadystatechange = Refresh();
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var ParamStr = 'ip='+ ip.value +'&mask='+ mask.value +'&vlan='+ vlan.value +'&ipaddress=' +ipad.value;
req.setRequestHeader("Content-Length", ParamStr.length);
req.send(ParamStr);
}
function Refresh()
{
var a = req.readyState;
if( a == 4 )
{
document.getElementById('loading').innerHTML = "Succeed!";
}
else
{
document.getElementById('loading').innerHTML = 'Loading.........';
}
}
</script>
P.S. Повторюсь, при обычном вызове php через Action все работает, то есть я неправильно отправляю параметры??
Спасибо заранее опять же
|
|
|
|