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