Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как лучше организовать структуру сайта?

Как лучше организовать структуру сайта?


     02.01.2022    нагрузка на бд, категории, вывод новостей    Все вопросы » Общие вопросы    184

вопрос
Здравствуйте,

Подскажите, пожалуйста, каким образом лучше организовать на сайте вывод новостей по общему параметру для оптимизации нагрузки на сервер?

Например, на сайте будет представлено около 1000 компаний, у каждой компании будут свои новости. Соответственно мне нужно, чтобы на отдельной странице сайта можно было получить все новости компании и её краткое описание.

Мои мысли:

1. Для каждой компании создать свою категорию и выводить описание категории за счёт {category-title} и {category-description}. Но я читал, что создание такого большого количества категорий ведёт к очень большой нагрузке на сервер, да и при добавлении новостей выбирать компанию из такого количества категорий неудобно.

2. Для каждой компании на сайте создавать свой тег. Описание компании выводить за счёт таких инструментов, как {cloudstag}, [available=tags]текст[/available], [tags=КОМПАНИЯ] текст [/tags], {page-title}, {page-description}.

3. Использовать символьный код для публикаций и сокращать название компании до трёх символов /catalog/tl2/, catalog/mts/, catalog/mgn/. Описание компании выводить за счёт {page-title} {page-description}.

Что из представленного выше наиболее оптимально и есть ли какие-либо другие способы решения поставленной задачи?

Ответа пока нет


7 комментариев

doom45
Юзер

doom45 - 4 января 2022 22:36 -

Первый вариант. У меня было 1900 категорий и 1 млн новостей, особых проблем не возникало до 300к просмотров (page views). БД весил 5-15 ГБ если это важно.

region029
Юзер

region029 - 5 января 2022 08:07 -

Интересно.
Подскажите, пожалуйста, как вы выбирали категорию из такого огромного списка при добавлении новости?
И какая была конфигурация сервера под такую нагрузку?

TeraMoune
Эксперт

TeraMoune - 6 января 2022 10:17 -

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

Через категории это безумие всё делать, сами подумайте ну зачем каждой компании категория ? Категории должны выделять группы компаний. Что, doom45, написал это еще не значит, что нагрузки не было, он её просто не видел, так как изначально может взять самый блатной сервак (может несколько). Или видел но не было но опять же это заслуга сервера. А он сильно просчитался, в прочем таких полно кто сперва делает, а после (ой у меня лагает) и потом начинает думать и искать выход, а поздно.

Категории призваны содержать в себе новости, а значит по вашей схеме должна быть одна категория выделяющая группу компаний и в каждой категории свои компании. Это могут быть IT компании и студии, Строительные компании, Общепит и тд.

Я видел сайт который тоже что-то там мутил с категориями и компаниями, человек хотел каталог компаний. У него было порядка 4.5к категорий. И всё работало ну не быстро определённо, а ведь сайт даже не был в запуске (на нём был я и админ).

Сами по раскиньте мозгами, и всё вроде же не сложно.

Используется всё в движке и категории и теги и доп. поля. Буквально всё ) просто в разных пропорциях и по разным нуждам.

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

Используется всё. Можете даже и символьные коды еще дополнительно использовать. Проявите смекалку короче.



Структуру категорий нужно тщательно обдумать, в таких масштабах у вас нету права на ошибку.

region029
Юзер

region029 - 6 января 2022 18:27 -

Спасибо за информацию!

Для меня самое главное иметь возможность получить на отдельной странице сайта все новости (публикации) каждой отдельной компании, а также описание компании с title и description на этой же странице. Я просто стараюсь использовать возможности движка из коробки (без модификаций).

Скорее всего буду применять tags и через админку для страницы site.com/tags/ИМЯ_КОМПАНИИ/ задавать title и description (через заголовки и описания).

Может быть, вы сталкивались - сложно ли заменить tags на какое-либо другое слово, например shops в файлах движка (много будет изменений)?

TeraMoune
Эксперт

TeraMoune - 6 января 2022 18:40 -

в htaccess,

RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [B,L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [B,L]


Тут в начале ^tags/, и его меняйте на другое слово

Но и в движке тоже придётся искать в файлах движка в используемых модулях формирование этих самых ссылок с словом tags и так же менять. А в плагинах потом добавлять замены на эти участки кода.

dj-avtosh
PHP-developer

dj-avtosh - 10 января 2022 16:21 -

Полностью солидарен с тобой, Кирилл. При таком кол-ве категорий на базу будет экстра нагрузка (особенно это будет видно при включении поддержки мультикатегорий) - допустим если зайти в самую родительскую категорию и вывести все из дочерних - сразу же начнет отрабатывать "всеми нами любимый" INNER JOIN на вложенный SELECT DISTINCT в DLE.

Doom45 видимо просто выводил по одной категории и ходил в самом нижнем уровне - тогда да - будет быстро (но опять же я не уверен, что он делал профилирование и смотрел на скорость таких запросов - а у него база ого-го 15 гигов).

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

Поэтому я бы так же делил категории как главную сущность - остальное вешал на теги.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

region029
Юзер

region029 - 6 января 2022 21:30 -

Цитата: TeraMoune
в движке тоже придётся искать в файлах

Ок, понял, поразбираюсь

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх