80 lines
3.3 KiB
Markdown
80 lines
3.3 KiB
Markdown
# Система загрузки публикаций
|
||
|
||
## Особенности реализации
|
||
|
||
### Базовый запрос
|
||
- Автоматически подгружает основного автора
|
||
- Добавляет основную тему публикации
|
||
- Поддерживает гибкую систему фильтрации
|
||
- Оптимизирует запросы на основе запрошенных полей
|
||
|
||
### Статистика
|
||
- Подсчёт лайков/дислайков
|
||
- Количество комментариев
|
||
- Дата последней реакции
|
||
- Статистика подгружается только при запросе поля `stat`
|
||
|
||
### Оптимизация производительности
|
||
- Ленивая загрузка связанных данных
|
||
- Кэширование результатов на 5 минут
|
||
- Пакетная загрузка авторов и тем
|
||
- Использование подзапросов для сложных выборок
|
||
|
||
## Типы лент
|
||
|
||
### Случайные топовые посты (load_shouts_random_top)
|
||
**Преимущества:**
|
||
- Разнообразный контент
|
||
- Быстрая выборка из кэша топовых постов
|
||
- Настраиваемый размер пула для выборки
|
||
|
||
**Ограничения:**
|
||
- Обновление раз в 5 минут
|
||
- Максимальный размер пула: 100 постов
|
||
- Учитываются только лайки/дислайки (без комментариев)
|
||
|
||
### Неоцененные посты (load_shouts_unrated)
|
||
**Преимущества:**
|
||
- Помогает найти новый контент
|
||
- Равномерное распределение оценок
|
||
- Случайный порядок выдачи
|
||
|
||
**Ограничения:**
|
||
- Только посты с менее чем 3 реакциями
|
||
- Не учитываются комментарии
|
||
- Без сортировки по рейтингу
|
||
|
||
### Закладки (load_shouts_bookmarked)
|
||
**Преимущества:**
|
||
- Персонализированная выборка
|
||
- Быстрый доступ к сохраненному
|
||
- Поддержка всех фильтров
|
||
|
||
**Ограничения:**
|
||
- Требует авторизации
|
||
- Ограничение на количество закладок
|
||
- Кэширование отключено
|
||
|
||
## Важные моменты
|
||
|
||
### Пагинация
|
||
- Стандартный размер страницы: 10
|
||
- Максимальный размер: 100
|
||
- Поддержка курсор-пагинации
|
||
|
||
### Кэширование
|
||
- TTL: 5 минут
|
||
- Инвалидация при изменении поста
|
||
- Отдельный кэш для каждого типа сортировки
|
||
|
||
### Сортировка
|
||
- По рейтингу (лайки минус дислайки)
|
||
- По количеству комментариев
|
||
- По дате последней реакции
|
||
- По дате публикации (по умолчанию)
|
||
|
||
### Безопасность
|
||
- Проверка прав доступа
|
||
- Фильтрация удаленного контента
|
||
- Защита от SQL-инъекций
|
||
- Валидация входных данных |