RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Ошибки при разработке сайтов на Joomla

Что не следует делать на Joomla-сайтах

Ошибки при разработке сайтов на Joomla

Давайте разберем какие ошибки обычно допускают web-мастеры Joomla-сайтов, как этих ошибок избежать и на порядок поднять качество продукта.

Попробуем затронуть вопросы полезные не только начинающих сайтостроителей, но и опытным разработчикам.

Этот пост я пишу основываясь на собственном опыте разработки сайтов. За более чем 4 года я познакомился с массой различных CMS и фреймворков, среди которых были такие популярные вещи как Joomla, Wordpress, Drupal, Bitrix, Zend Framework, Nooku Framework. … и не очень популярные: Amiro, UMI, NetCat, MODx, Mentant и какие-то страшные, студийные разработки.

Так что накопилось опыта достаточно чтобы понимать что такое хорошо и что такое плохо в мире сайтов. И раз сайт посвящен вопросам Joomla, то попробую перечислить основные ошибки разработчиков этой CMS и конечно же способам их решения, хотя некоторые советы полезны для всех веб-мастеров. Начнем с банальных…

1. Не нужно устанавливать и включать все подряд

Обычный сюжет. Нужен небольшой сайтик — пусть это будет интернет-магазин. Но там должна быть какая-нибудь изюминка. Да и не просто, а так чтобы все просто ахнули. И не одна! Больше фишек!

Человек идет на всем известный JED, находит virtuemart, пачку плагинов к нему + все что только смог скачать. А ведь на демках было так красиво. В итоге страница открывается по 10–20 секунд, начинает ехать верстка, в консоли с десяток конфликтов JS. Это уже не говоря о том что в фоне проходят до 500 запросов в базу данных. Даже локальный denwer начинает не справляется с таким натиском.

Из жизни. Однажды ко мне постучался человек, который хотел заказать оптимизацию (не SEO, а скорости загрузки). Сайт в арсенале имел virtuemart с большим магазином и множество различных виджетов, вроде слайдеров, каруселей это не говоря о том, что дизайн тянул за собой около 40–50 мелких картинок, превьюшки товаров пережимались с помощью PHP скрипта на ходу, каждый раз заново без кэширования.

А теперь о страшном. Главная страница грузилась примерно 10–15 секунд на реальном хостинге, при этом делал около 600 запросов в базу данных. В браузер приходило 34 css-файла, около 40 js файлов, ~150 картинок (тут и от дизайна и от превьюшек товаров, которые создавались через PHP, без кэширования) и небольшая горстка счетчиков, кнопки «Like». Консоль выдавала 7 конфликтов — как оказалось позднее это 4 раза jQuery разных версий(1.2–1.6), 2 mootools (1.2, 1.3) и даже prototype (видимо какой-то модуль за собой потянул). Оценка оптимизации была сопоставима с разработкой нового такого же сайта.

Вывод: устанавливайте расширения с умом, а желательно обходиться стандартными средствами Joomla API (в ней есть множество интересных решений). Если все же решились ставить чужие расширения, то выберите лучшее из лучших.

Ставьте аккуратно по одному и сразу устраняйте конфликты. Кстати лучшее — это не обязательно то, что много скачали;)

2. Конфликты JS библиотек (Mootools vs jQuery vs…)

Joomla по умолчанию использует Mootools и не всем это нравится. Некоторые из нас любят jQuery, кто-то yahoo api, кто-то что-то еще… Вот только некоторые забывают отключать mootools и начинают во всю использовать jQuery — и вот вам самый популярный конфликт. И тот и другой пытается использовать $. К тому же скорость загрузки сайта падает.

Тут решение простое: не нужно использовать разные JS-библиотеки на одном сайте. Придерживайтесь либо mootools, либо JQuery. В крайнем случае включайте режим совместимости jQuery.noConflict().

3. Используем кэширование Joomla

Кэширование — вещь очень полезная. Снизится нагрузка на web-сервер, сайт будет грузиться в разы быстрее и вы не потеряете своих посетителей. Стандартное кэширование Joomla спасает только частично. Почему? Потому что многие сторонние расширения не используют никакого кэширования (хотя это так просто реализовать), а то что есть — скорее всего малоэффективно и нуждается в тонкой настройке или дописывании.

Мало кто знает, что в Joomla встроены драйвера для работы с различными системами кэширования по мимо обычной файловой: eaccelerator, memcache, xcache, apc, cachelite, wincache. Включить их можно из общих настроек (если они доступны в ОС). Их использование может легко увеличить скорость работы вашего web-сайта.

Есть еще стандартный плагин кэширования — это очень сильная вещь, но включать его нужно с осторожностью. В кэш попадает вся страница и обновиться кэш только через некоторое время или после чистки.

Чтобы ускорить загрузку сайта с использованием кэша, познакомьтесь с разделом посвященный ускорению сайта на Joomla. Помните — медленным сайтам меньше доверяют и часто уходят.

4. Клиентская оптимизация страницы

Это не SEO, а скорость загрузки страницы в браузере. Чтобы лучше ознакомиться с этим вопросом лучше прочитать труды от webo.in: Реактивные веб-сайты и Разгони свой сайт.

Если кратко, то существенно ускорить загрузку страниц сайта можно путем объединения и архивирования CSS и JS, верных HTTP-заголовков сайта, спрайтов и отложенной загрузки JS. Пример удачной оптимизации — это Joomla-book.ru :)

5. Включаем SEF (ЧПУ)

Вот тут начинаются вечные холиварные вопросы…

  • SEF тормозит сайт
  • SEF нужен только для поисковиков
  • и т. д. ряд других…

Холиварить на эту тему не очень хочется, просто расскажу свою позицию ниже.

Почему SEF так важен?

  • пользователям удобнее ориентироваться (если конечно вы сделали аккуратные ссылки с продуманной иерархией). Это плюс к юзабилити.
  • поисковики лучше понимают структуру сайта — в ссылках должна быть заложена иерархия. Это плюс к продвижению.
  • сайт сложнее будет взломать, защита от банальной SQL-инъекции. Плюс к безопасности.
  • Нет мусора в ссылках.

Теперь ответы на вечные вопросы:

  • Сайт начинает тормозить!

    Тогда лучше использовать кэширование и стандартный SEF, он почти что справляется с поставленными задачами.
  • Что выбрать JoomSEF, ArtioSEF, sh404, … ?

    Если вы сторонник высокой производительности и не собираетесь долго разбираться в тонкостях кэширования и оптимизации сайта, то лучше конечно выбрать стандартный SEF Joomla. Но в нем есть явные минусы — в ссылках все равно остаются числа (хотя это как-то криво-косо решается хаками и сомнительными плагинами), не коробочные компоненты будут создавать страшные ссылки, вроде /component/tags/mytag.html. Если кто не понял, то наличие «component» совершенно лишнее.

    Если же вам больше по душе гибкое управление всеми ссылками на сайте, хочется легко добавлять редиректы, иметь под рукой лог404 и баз всех ссылок на сайте, то ставим ArtioSEF или ему подобные. Но как всегда есть маленькое, но весомое НО. Вы получите примерно +50–100 лишних запросов в базу данных. Сразу скажу, что эти проблемы решаются кэшированием, да и к тому же запросы в базу выполняются в основном по ключу, а они очень быстрые. предупреждаю сразу, что нужно хорошо понимать принципы построения ссылок и работы ваших компонентов, чтобы избежать дублей страниц на сайте и прочих классических ошибок.
  • SEF создает большое количество запросов к базе данных.

    Еще один миф… Давайте разберемся.
    Все кругом говорят что SEF делает уйму запросов к базе данных. Согласен.

    А еще все говорят что эти запросы тормозят Joomla. Не согласен. Покажите мне результаты профилирования sql-запросов — сколько времени уходит только на работу с базой данных и сравнение с включенным стандартным SEF и не стандартным. И вот что интересно, что все говорят что это страшно медленно, а реальных чисел никто не показывал и не знает. Я это дело смотрел, как-нибудь потом выложу результаты в этом блоге.
    А на самом же деле большинство запросов происходит по ключу из проиндексированной таблицы почти без посторонних условий с лимитом по одной записи. Это самые простые и быстрые запросы в MySQL;)

    И еще раз повторюсь — не нужно пренебрегать кэшированием.

Лично я являюсь сторонником того, что SEF (ЧПУ) должно быть включено, а ссылки должны выглядеть идеально. Поэтому поставил ArtioSEF и хорошенько поработал над оптимизацией сайта. В итоге на одну страницу уходит ~20–25 запросов, а генерация страницы происходит ~0.1–0.3 сек;). В пример — все тот же Joomla-book.ru

И не забываем что сайты для людей, и именно им должно быть удобно, даже среди ссылок.


6. Не забываем менять favicon сайта

Мелкая, но очень популярная ошибка на сайтах (кстати не только Joomla). Если кто-то еще не знает как, читаем ответ из раздела FAQ — Как изменить иконку сайта?

7. Удалите демо контент

Здесь по моему все очевидно.

8. Никогда не используйте virtuemart!

Это один из самых плохих компонентов Joomla. Почему? читаем пост о проблемах разработки магазина на virtuemart

9. Меню должно задавать структуру сайта

Меню Joomla — это очень важная часть структуры сайта. Именно через него задается активность и настройки модулей, шаблонов, компонентов.

Каждый пункт меню несет в себе Itemid, который является одной из ключевой переменной системы. С помощью неё формируются ссылки, ЧПУ и сами страницы в принципе.

Поэтому при проектировании иерархии своего сайта придерживайтесь меню и то как оно работает с компонентами, иначе со временем у вас будут проблемы, решать которые будет дороже с каждым днем.

10. Используйте расширения по назначению, работайте только с гибкими компонентами

Есть в Joomla такой компонент как менеджер материалов. Когда-то его считали шикарным и замечательным, но к текущему моменту он сильно устарел с моральной точки зрения. Но, тем не менее, все новички пытаются выжать из него невозможное, например, сделать из него каталог товаров.

Зачем так издеваться, не понятно. Менеджер материалов нужен только для простейших текстовых страниц, максимум — блоги. И создавался он именно для этих целей. Если вы начинаете делать сайт с планами на будущее, то не нужно сразу зажимать себя малофункциональным компонентом. Зачем искать хаки, дополнения, плагины, чтобы сделать из текстовых страниц нечто большее, если есть специальные расширения для каталогов, тот же Zoo или jSeblod.

Честно говоря, вообще не советую использовать обычные материалы Joomla.

Исходя из вышесказанного, хочется посоветовать брать гибкие расширения, которые могут решить множество задач без серьезных вмешательств в код. Таким образом вы изначально будете готовы к серьезным апгрейдам на сайте в будущем.

…и еще

Конечно, сказать еще хочется много всего, поэтому это только первая часть из цикла советов. В следующих статьях мы рассмотрим более серьезные вопросы и ошибки, касаемые разработки сайтов на Joomla.

Смотрите также:
Комментарии (14) Добавить комментарий
  • Сергей
    Сергей
    02 Июня 2011, 03:02
     ↑  +2  ↓     ответ

    Полностью согласен с вашими выкладками.

    Единственное, для себя не могу никак принять, что сторонние SEF-расширения полезны для сайта, предпочитаю использовать встроенный SEF, хотя меня раздражает, что на Joomla нельзя сделать красивые ЧПУ без циферок, как это делает wordpress или drupal.

    Хотел использовать sh404sef - очень расхваливают его, много настроек - долго разбираться, а хочется включить и не думать.

    Может обоснуете ваш выбор (ArtioSEF)?

    Да Joomla потеряла свои темпы развития и это замечают сами члены Community - dlvr.it/TlqNX . Не зря ведь появился проект Nooku (хотя возможно мои размышления наивны...).

    И да com_content устарел - чертовски устарел! неужели они сами не видят. Я лично перешел на K2, как более гибкий, хочется освоить ZOO (в силу мультикатегорийности, чего не хватает K2), но все времени не найду.

    И насчет кривых расширений - уже стал составлять для себя список грамотных разработчиков под Joomla, предпочитаю пользоваться их расширениями, ибо, остальные вызывают подозрения на криворукость рук разработчиков

    • smet.denis
      smet.denis (админ)
      02 Июня 2011, 03:17
       ↑  0  ↓     ответ

      ArtioSEF мне по душе скорее по историческим причинам. Первый опыт был с ним, потом оказалось что он меня устраивает.

      В бесплатной версии есть все возможности которые мне требуюутся: редиректы 301, логи, мета (хотя их стараюсь вынести на совесть компонентов) и самое главное - это легкость создания расширений под различные компоненты. Само расширение написано классом в стиле Joomla, а не прямым кодом (как например у sh404) и еще может пара-тройка мелочей.

      Хотя есть минусы у него - можно легко накрутить лапши из ссылок, если ошибиться в админке.

      Другие SEF'ы смотрел, в принципе делают все тоже самое, так что менять старого знакомого Artio на другое смысла не увидел.

      • Сергей
        Сергей
        02 Июня 2011, 03:23
         ↑  0  ↓     ответ

        А как насчет нагрузки? Он ее хорошо держит - просто читал, что якобы при посещаемости выше 1000 хостов, он загнется, хотя понимаю, что это чье то частное мнение.

        И хотел спросить, все ругают Virtuemart. Ну а альтернатива есть? Все остальные e-commerce компоненты заточены на буржунет с его PayPal. В итоге прихожу к выводу - "кесарю, кесарево" для создания магазинов лучше использовать e-commerce CMS - Joomla здесь явно не тянет. Ваши мысли по поводу этого?

        • smet.denis
          smet.denis (админ)
          02 Июня 2011, 03:37
           ↑  +1  ↓     ответ

          joomla-book.ru при загрузке страницы не делает больше 25-30 запросов в базу,а то и меньше 10. Artio срабатывает при необходимости создания НОВОЙ ссылки и парсинга ТЕКУЩЕЙ. Создавал нагрузку через ab, выдерживал небольшой DDOS. Суточных уникалов порядка 1500, просмотров 4000-5000. Так что нагрузку держим за счет 3 пункта ;)

          Насчет virtuemart и его альтернативах писал в соседнем топике, даже не знаю что добавить.

          joomla-book.ru/blog/thinking-aloud/why-i-hate-virtuemart#comment-583

          Joomla магазин - это сказки, качественной реализации не доводилось видеть.

    • smet.denis
      smet.denis (админ)
      02 Июня 2011, 03:19
       ↑  0  ↓     ответ

      Хм, если не сложно можете поделиться своим списком «грамотных разработчиков под Joomla»?

      Можно прямо в комментариях)

      Сейчас появилась мысль написать пост о том, что же лучше выбирать и почему с конкретными примерами.

      • Сергей
        Сергей
        02 Июня 2011, 03:48
         ↑  +5  ↓     ответ

        Да пожалуйста, но все это мое личное ИМХО, так что каждый пусть выбирает свое.

        Итак, мой любимчик - Peter van Westen и все его расширения - nonumber.nl/ . ИМХО очень скрупулезно относиться к своим разработкам, постоянно их улучшает и совершенствует. Его расширения стоят практически на всех моих сайтах.

        Второй, не менее интересный, но качественный разработчик Nicholas K. Dionysopoulos - его прекрасные разработки вы легко найдете на akeebabackup.com/ - гуру безопасности Joomla и резервного копирования, взял в этом году несколько премий за Akeeba Backup.

        Далее, те с кем не особо сталкивался, но их стиль и направления работы мне нравятся:

        Расширения от ninjaforge.com/ - просто хорошие расширения. Stian Didriksen - работает с Nooku и разрабатывает на нем компонент форума NinjaBoard (аналог Kuneta)

        Ну и конечно, не стоит забывать моих любимчиков из JoomlaWorks - их K2 верой и правдой служит мне, заменяя com_content. Кстати, 4 часа назад упомянули, что K2 v2... закончится на v2.5 для J1.6 и далее будут работать над v3. Угадайте на чем она будет основана? Правильно, на Nooku (Так что информация о нем была бы очень уместна, Денис ;-)

        Также нравятся расширения от RS (со своим сказочным RSform pro) и iJoomla, но их я еще мало тестировал и пока вразумительного написать нечего.

  • Юрий
    Юрий
    18 Сентября 2011, 15:27
     ↑  +1  ↓     ответ

    Сейчас разбираюсь с Joomla 1.7, которую установил на свой Denwer. Ранее продумал и сделал примерный макет сайта. Хотел уже начать создавать категории, подкатегории и размещать свои порядка тысячи авторских материалов, но пункт 10 Вашей статьи "Ошибки..." привел меня в состояние полной прострации. Заплел себе все извилины, но так ничего и не понял. Совсем убила фраза "Честно говоря вообще не советую использовать обычные материалы Joomla". ??? - Что все это значит??? И кстати, - если не возражаете, то могу подправить нередкие грамматические огрехи в Ваших - по большей части - очень интересных статьях. ...А Вы бы мне бартером сделали шаблончик под мой макет.

    • smet.denis
      smet.denis (админ)
      23 Сентября 2011, 10:14
       ↑  0  ↓     ответ

      Там написано почему не нужно использовать и что можно взять за альтернативу (например Zoo). Что конкретно не понятно?

  • Dark
    Dark
    12 Октября 2012, 15:53
     ↑  0  ↓     ответ

    "... путем объединения и архивирования CSS и JS..."

    посоветуйте пожалуйста, где можно подробнее о этом прочесть

    и еще, как (или чем) можно определить конфликт библиотек? Есть ли хороший и понятный материал, который помог бы разобраться и научить это делать?

    Заранее, спасибо

  • Евгений
    Евгений
    18 Февраля 2013, 19:48
     ↑  +1  ↓     ответ

    Здравствуйте. Большое спасибо за статью! Некоторые моменты и опытным джумлерам полезны.

    Честно говоря, я столкнулся с проблемой кеширования нескольких png картинок в модулях и статьях на joomla 2.5. Вся проблема в том, что https://developers.google.com/speed/pagespeed/insights говорит срок действия не указан для 7 картинок png. Из прнцыпа уже 2 дня голову ломаю как сделать эту оптимизацию.

    В htaccess уже добавлял <imodule>. В httpd.conf тоже аналогичное прописал. И на сервер ставил мемкеш и икскэш. Короче уже бросить готов, ведь скорость загрузки 92 из 100, но как то хочется довести дело до конца. Помогите пожалуйста если знаете.

  • Денис
    Денис
    10 Апреля 2013, 23:27
     ↑  -2  ↓     ответ

    Люди, мне кажется что на моем сайте разработчики допустили все вышеперечисленные ошибки. Помогите составить им письмо с претензией, грамотной и обоснованной. Естественно не за спасибо. 9335656@mail.ru Денис. Спасибо

  • Сергей
    Сергей
    22 Октября 2013, 14:41
     ↑  0  ↓     ответ

    Здравствуйте! Скажите, как часто необходимо производить КЭШ?

  • Юрий
    Юрий
    19 Ноября 2013, 22:06
     ↑  0  ↓     ответ

    На сайте,созданном на платформе Joomla, вместо символов появились какие-то кракозябры. Включил режим отладки языка, сайт вернулся к нормальному виду,но эта панель отладки появилась на главной странице сайта, а не в админке. Если снять галочку с "отладки языка", то снова появляются странные символы вместо нужного контента.Хотелось бы и русский язык сохранить на сайте,и скрыть панель отладки. Спасибо!

  • Алекс
    Алекс
    27 Января 2014, 21:52
     ↑  0  ↓     ответ

    Как восстановить доступ к админке?

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.