Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 2291 Просмотров
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Рассмотрим для определенности компонент-магазин. В нем есть категории и товары. Товар может одновременно принадлежать двум и более категориям. И тут возникает такая вот дилемма:

Какая должна быть ссылка на этот товар?

Ведь товар A в категории X и товар A в категории Y это две разные страницы, на них будут разные навигационные крошки, разная подсветка активных пунктов меню, ведь так? Следовательно, раз это две разные страницы, то как они могут иметь одну ссылку? Это противоречит здравому смыслу.

Сдругой стороны это противоречит взглядам сеошников. По их мнению пс расценивают эти страницы как дубли.

Так что же делать? Как эти проблемы решаются в популярных компонентах? И как они должны решаться на самом деле?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Ссылка на товар должна быть только одна (и вообще любой документ должен быть только по одной ссылке)
По сути даже не важно какая -
site.ru/shop/product  или
site.ru/product

Но ни как не такие -
site.ru/category_X/product  ## Здесь, что по первой, что по второй
site.ru/categoty_Y/product   ## ссылке будет один и тот же товар, а это 100% дубль документа

Вот тут например доходчиво можно прочитать о дублях, и еще процитирую
Цитировать
Доступность страницы по разным адресам снижает эффективность взаимодействия поискового робота с сайтом, а также является причиной неверного определения релевантной страницы по её ключевым словам. Избавляйтесь от копий, а если это невозможно, добавляйте канонический тег rel=canonical для потенциальных дублей страниц сайта.

*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
ELLE, как ты предложишь решить проблему?
Можно ли ее решить через canonical ?

И если товар должен иметь один урл, то как передать информацию о категории ?
« Последнее редактирование: 19.03.2012, 21:52:36 от danik.html »
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
я бы не стала ее решать через canonical
допустим имеем страницу с категорией X - site.ru/category_X на ней представлен список товаров с ссылками на карточку товара.
Соответственно страница site.ru/category_X будет ссылаться на site.ru/category_X/product
А страница с категорией Y - site.ru/category_Y на site.ru/category_Y/product
Если мы будем выбирать между этими двумя ссылками на один и тот же товар и укажем на какой-то странице canonical, то толку от второй категории нет.
Или лучше по-другому попробую...если две страницы /category_X и /category_Y будут ссылаться на один и тот же адрес - site.ru/product
то наша карточка товара получит больший вес, нежели если будем использовать каноникал..потому что та вторая страница из выбранных - она нам все равно не нужна, в поиск не попадет, а вот вес забирает.. (и это я в пример взяла только страницу категории, а есть ведь еще модули, типа похожие товары, сопутствующие - тут вообще может получиться что наша продвигаемая карточка никакого веса не получает)

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

Если говорить о хлебных крошках и вообще о том как привязать товар к одной категории, но чтобы при этом товар отображался в двух. Вот допустим если взять связку VM+sh404, то там у меня выходит так - есть список категорий, они идут по очередности, допустим товар находится в категории №3, №18 и в категории №49 - в крошках отображается категория №3, т.е. первая из списка - меня это устраивает, при этом ссылка на товар - site.ru/product.
Еще пример под спойлером, правда сайт на битрикс, но смысл думаю понятен
Спойлер
[свернуть]
« Последнее редактирование: 19.03.2012, 22:57:26 от ELLE »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Я думаю выводы можно сделать такие:
1) В компоненте должны быть возможность указать "основную" категорию, а так же, при необходимости - дополнительные. Зачем это нужно:
- Для построения ссылки, независимой от "текущей" категории. Тоесть если основная категория X, а Y - дополнительная, то ссылка на товар будет всегда category_X/product_A.html
- Для указания в крошках и подсетки как активной главной категории.
2) Параметр category_id не нужен. При построении ссылки роутер сам выяснит его для товара и построит ссылку. При разборе ссылки этот параметр вообще не нужно восстанавливать, достаточно проконтролировать что восстановленный category_id из алиаса действительно принадлежит товару, иначе выдать 404.
3) В роутере должна быть возможность отключения "вложенного" урла.
4) Желательно в компоненте хранить "текущую" категорию в сессии. Благодаря этому втечение сессии можно добиться правильной подсветки именно текущей категории, а не основной для товара, и соответственно правильных хлебных крошек.

Кто что по этому вопросу думает? Какие моменты могут препятствовать такой схеме работы компонента?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мультикатегорийность

Автор NeedHelp

Ответов: 3
Просмотров: 1798
Последний ответ 05.07.2014, 19:35:34
от voland
Google и Yandex выдают странные вещи

Автор StyleRocket

Ответов: 3
Просмотров: 3837
Последний ответ 13.12.2012, 19:17:01
от Maxum