Задать вопрос

Реализация превью статьи?

Здравствуйте. Потребовалось реализовать превью (частичный показ статьи). Можно сравнить с Хабром: на главной несколько урезанная статья; при переходе по ссылке — полная версия! Как спроектировать реализацию на SQL?


На данный момент есть три идеи:
  1. Хранить статью в одной ячейке вместе с меткой (habracut). При надобности разбивать на две части
  2. Хранить статью в двух ячейках. При надобности соединить в одну
  3. Хранить статью в одной ячейке. Распарсить при первом сохранении. В отдельной ячейке хранить позицию метки. При надобности разбить на две по сохраненной позиции метки


Сам я склоняюсь к варианту №3. Интуитивно кажется, что вариант должен быть самым производительным. Как думаете вы? Может есть еще варианты?
  • Вопрос задан
  • 3398 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
@Progrik
Если не критичен размер БД, то 2, но без соединения (т.е. в первой ячейке анонс, во второй целиком статья).
Если не критично время, которое требуется чтоб каждый раз дёрнуть нужные статьи из БД и порезать их пополам, то 3.

Лично я использую 2й вариант и не чувствую угрызений совести.
Ответ написан
@ikra
Что за вздор?! Конечно же достаточно двух полей: article_аnounce и article_text.
Ответ написан
Комментировать
Вижу меня не до конца понимают, поэтому опишу подробнее.

— Нужна таблица с полями: id и anounce.
— На главную страницу выводим блоки текста с этой информации. По клику открываем статью с нужным id.
— Статью целиком берём из файла с именем .php

Преимущества:
— Не загружаем тяжёлыми запросами СУБД. Запросов меньше.
— Опкэшер сам кэширует статьи. Без каких либо танцев с бубном.
Ответ написан
Самым производительным вариантом будет хранение статьи в файле, а в БД хранить только ссылку на файл.
Ответ написан
jj_killer
@jj_killer
Да и по первому пункту попробуйте так:
SUBSTRING(`text`, 1, (INSTR(`text`, "[habracut]")-1))
Ответ написан
Evengard
@Evengard
Два поля. В одном — только то, что до метки ката. Вторая — вся статья (как и то, что до метки ката, так и после)

Конечно, получается дублирование данных. Но если вам CPU важнее, чем место на харде, то почему нет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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