Авторизация на сайте

 

Joostina 1.3.0, еще быстрее и интереснее

Дата начала публикации: 10.08.2009
Бессонные ночи не проходят даром, почти каждый день Joostina CMS получает большие или маленькие изменения позволяющие выиграть миллисекунды при генерации страницы и килобайты расхода памяти. С момента выхода beta 3 мы смогли сделать реализовать следующее:

Оптимизирован расход памяти.
Очень интересный момент, раньше при установке по умолчанию на главной странице расход памяти был 6.02 мб, что не очень много, но всё же не радует. В текущем состоянии расход памяти уменьшился до 5.54 мб. Такой резкий скачок вызван логическим пересмотром работы кэша. Александр (ershovdz) при профилировании системы заметил что довольно много времени отнимает создание объекта кэша типа $cache = &mosCache::getCache('com_content');, и не меньше - само использование его $r = $cache->call('frontpage', $my->gid,$limit,$limitstart,$pop);. А в системе часть вызовов функций сразу шла через кэш, и получалась двойная работа + расход памяти. Что бы избавиться от такого досадного явления - мы решили, и сделали, да. Добавили поверку на активирование кэша. Если активен -  вызов функций через $cache->call, не активен - вызываем напрямую.

Переделано ведение лога sql запросов.
Раньше.., давным давно... Нет, собственно примерно год назад меня начали мучать мысли что класс базы данных как-то не очень корректно спроектирован. Он всегда хранил в себе (при активации параметра) лог всех выполненных ранее запросов. Ну в пределах сессии конечно. А при создании объекта, или при получении ссылки, у него всегда имеется метод базы данных. Получается что при создании $content = new mosContent($database); или $user = new mosUser($database); мы всегда будем иметь в объекте метод содержащий лог ВСЕХ запросов ранее $content->_db->_log, и $user->_db->_log. Тянуть за каждым объектом лишнее свойство и расходывать память - не очень хороший вариант. Поэтому логирование запросов перенесли туда куда и следовало, в jdebug.

Оптимизировано определение Itemid.
Полностью избавления от этого артефакта в Joostina 1.3.0 не будет. Но небольшие оптимизации всё же сделали. Для начала уменьшили число аналогичных запросов, объединив их в один. Теперь не важно сколько последних новостей или популярного содержимого отображается в модуле - число запросов будет словно там один объект. Так же было улучшено определение Itemid у статичного содержимого расположенного в меню, этот запрос вообще убрали, все ссылки из меню у нас получаются при первой инициализации ядра, и нужные параметры можно брать прямо оттуда.

Убраны запросы для формирования модулей меню.
При настройке модуля меню можно указать, какое из меню он будет отображать, например mainmenu или topmenu и т.д. Потом при формировании самого меню делался запрос в базу, и получались пункты нужного меню. Но у нас же все меню инициализируется при создании ядра, и обратиться можно туда, напрямую. Это еще минус 2-4 запроса на страницу.

Доработано использование акселераторов кэширования.

Тут тоже отличился Александр. Он исправил ошибки в работе с xcache, и добавил парамтеры настройки memcache.

Добавлены красивые sef-ссылки.
Для тэгов теперь ссылки имеют вид http://www.site.ru/tag/joostina, для регистрации http://www.site.ru/register/, для восстановления забытого пароля http://www.site.ru/lostpassword/.

Добавлен селектор выбора времени кэширования модуля.
В основные модули добавлен новый параметр – выбор времени кэширования. Реализовано в виде выпадающего списка значений:
  • не кэшировать
  • 1 минута
  • 5 минут
  • 10 минут
  • 15 минут
  • 20 минут
  • 30 минут
  • 1 час
  • 2 часа
  • 2,5 часа
  • 5 часов
  • 12 часов
  • 24 часа
  • 48 часов
  • 1 неделя
Вот такие события прошли за 4 дня, с момента выпуска версии Joostina 1.3.0 beta3. Не за горами первая RC версия, оставайтесь на связи, впереди еще много интересного ;)

Добавить комментарий


Защитный код
код с картинки (Обновить)