Как тестировать и оптимизировать JS скрипты
Павел Марковнин подробно рассказывает, как пользоваться профайлером Firebug на живом примере.
Рекомендую
Павел Марковнин подробно рассказывает, как пользоваться профайлером Firebug на живом примере.
Рекомендую
Steve Souders поделился сразу несколькими занятными фактами об особенностях современных и не очень браузеров.
IE и независимые от протокола URI
Internet Explorer 7 и 8 при использовании URI вида "//rmcreative.ru/css/main.css" будут загружать файл два раза. При явном указании http, https или использовании относительных URI этого не происходит.
document.write и FireFox
При загрузке скриптов через document.write в FF (в том числе и в 3.6) блокируются остальные загрузки.
IE грузит стили с media="print"
Причём делает это даже когда мы ничего не печатаем. При этом до полной загрузке блокируется рендеринг страницы.
Подключаем стили через JavaScript
Можно избежать блокировки, используя JavaScript:
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = '/main.css';
document.getElementsByTagName('head')[0].appendChild(link);
Chrome, Safari и загрузка фоновых изображений
Перечисленные браузеры начинают загружать фоновые изображения до подгрузки CSS. Таким образом, изображения будут загружены даже если в CSS они переопределены.
Источники:
- Souders blasts off 5 in a row
- Missing schema double download
- document.write scripts block in Firefox
- media=print stylesheets
- dynamic stylesheets
- Speculative background images
Facebook, как вы уже могли слышать, выпустил транслятор PHP в код C++, названный HipHop.
Отмечу основные моменты
- Бесплатный, открытый исходный код.
- HipHop уже используется в Facebook по полной программе.
- PHP → С++ → GCC → бинарник. Делать это надо каждый раз при развёртывании кода.
- Бинарник может работать как сервер (libevent), а также запускаться из командной строки.
- Веб сервер = один процесс, много потоков.
- Не использует Zend Engine. Использует написанный на C++ почти совместимый с PHP 5.2 фреймворк.
- Используются расширения на C++ (стандартные написаны C). Сейчас доступны те, что использует Facebook. Остальные будьте готовы переписывать сами. Все расширения на C++ thread-safe.
- Некоторые магические методы поддерживаются, но не работают быстрее.
Не поддерживаются
- Windows.
- PHP 5.3 (поддержка планируется).
- eval().
- create_function()
- preg_replace с модификатором /e.
- function_exists() до объявления функции.
Поддерживаемый динамический функционал
- Динамический вызов функций, в том числе call_user_func().
- Динамические методы и свойства объектов.
- Динамические переменные, extract().
- Динамический include().
- Переопределение функций, классов, констант.
- __toString(), __get(), __set(), __call().
Источники информации:
- Анонс
- Исходный код
- My Thoughts on HipHop, Ilia Alshanetsky
- Notes from Facebook's HipHop for PHP Debut, Kris Jordan
- HipHop: What you need to know, Marco Tabini

Вышла финальная электронная версия второй книги по клиентской оптимизации за авторством Николая Мациевского (webo.in, «Разгони свой сайт», Web Optimizer), Евгения Степанищева и Глеба Кондратенко.
Читаем
Появление книги в магазинах в традиционном бумажном виде запланировано на Март.
Наконец-то Google Analytics можно установить у себя без ущерба скорости загрузки страницы.
Новый код выглядит так:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
Один из моих любимых технических писателей Stoyan Stefanov, автор Object-Oriented JavaScript, портировал обжиматель CSS из YUICompressor на JavaScript.
Демо
Код
Кстати, за основу сжатия CSS в YUICompressor был взят cssmin, написанный на PHP.

Готова первая версия рукописи замечательной книги, о предварительной версии которой я уже писал.
Анонс на хабре от автора
Почитать в электронном виде
В рамках онлайн-конференции Сергей Чикуёнок ответил на множество различных вопросов.
Вопросы и особенно ответы получились на удивление полезными, так что советую прочитать и обдумать.
Читаем
Кстати, в рамках той же онлайн-конференции задавались вопросы и другим не менее интересным людям.
FireFox, в отличие от всех остальных, отлично понимает внедрённый в JPEG цветовой профиль. Для фото это замечательно. А вот для элементов оформления — не очень: во всех браузерах будет одно, в FF — другое. Так что профили, которые к тому же ещё и занимают некоторый объём в общем файле, лучше вырезать.
Я пользуюсь для этого JPG Cleaner, который дополнительно умеет вычищать превью и текстовую информацию.
Полезное руководство по настройке и ускорению работы популярной CMS Drupal.
Рассмотрены общие принципы, полезные модули и немного оптимизация сервера.
Читаем