Archive for Июнь, 2009

Плагин для кэширования селекторов в jQuery

Posted by Olegas on Июнь 29, 2009
IT / No Comments

Простой плагин для jQuery, позволяющий закэшировать работу селекторов.
По наводке tenshi в камментах к http://olegas.habrahabr.ru/blog/63119/

(function($) {
  var selectorCache = [];
  $.cache = {
    get : function(selector) {
      return selectorCache[selector] || (selectorCache[selector] = $(selector));
    },
    clear: function(selector) {
      selector == null ? selectorCache = [] : selectorCache[selector] = null;
    }
  }
})(jQuery);

Использовать примерно так:

// Before
$('#some .css .selector').some().action();

// After
$.cache.get('#some .css .selector').some().action();

Tags: ,

C#-like cобытия для PHP. Reflection, closures…

Posted by Olegas on Июнь 27, 2009
IT / 1 Comment

Задача – сделать на PHP эвенты а-ля C# т.е. произвольный объект может генерировать события. Другие объекты могут на эти события подписываться непосредственно у экземпляра генерирующего объекта.
Continue reading…

Tags: , ,

Оптимизация с помощью замыканий.

Posted by Olegas on Июнь 26, 2009
IT / No Comments

Дано – раз в секунду дергается AJAX’ом скрипт, в нем несколько вызовов одной функции (назовем ее updater) с разными аргументами. Функция в соответствии с аргументами апдейтит некоторый набор DOM-элементов (меняет контент, скрывает, показывает) на текущей странице. Используется jQuery, визэффекты и т.п. Т.е. на клиента приходит примерно такой код…

updater('id1', 10, 20);
updater('id33', 11, 22);
updater('id181', 102, 27);

Проблема – после увеличения количества вызываемых функций (увеличилось количество типовых блоков) все жутко тормозит – много времени уходит на jQuery, на выбор DOM-элементов по селекторам.

Требуется по-возможности быстро и безболезненно, не меняя верстку и не отказываясь от jQuery оптимизировать процесс.
Continue reading…

Tags: , ,

Coming soon…

Posted by Olegas on Июнь 26, 2009
IT / No Comments
  • PHPReflector – что такое, с чем и как есть, а с чем не есть;
  • События в PHP – используем Reflection API, callback и замыкания;
  • Замыкания как средство оптимизации.