Обеспечение свежего контента для фотоальбома - PullRequest
1 голос
/ 22 апреля 2009

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

Есть еще одна страница, где вы видите уменьшенные версии нескольких фотографий.

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

Мне бы очень хотелось, чтобы новые фотографии имели приоритет над старыми.

Моя идея заключается в том, что когда пользователь нажимает кнопку «Далее», он попадает на самую новую фотографию, а перемещение оттуда приведет пользователя назад ко всем новым фотографиям.

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

Я хотел бы убедиться, что пользователь не видит ту же фотографию. Я думал о том, чтобы поместить уникальный файл cookie для каждого посетителя, а затем, когда пользователь посещает фотографию, я записываю ее в таблицу посещений. При выборе новой фотографии из БД в качестве «следующего» я ​​гарантирую, что пользователь не посещал эту фотографию раньше.

Меня (преждевременно) беспокоит, как это повлияет на загрузку базы данных.

Есть идеи о том, как лучше всего сделать этот или альтернативный метод?

EDIT:

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

РЕДАКТИРОВАТЬ 2:

Так вот, это то, о чем я сейчас думаю. Выглядит хорошо? Я бросил это вместе (буквально, выключение питания через 5 минут для ремонта, мне придется вернуться завтра, надеюсь, это имеет смысл).

alt text
(источник: googlepages.com )

Ответы [ 3 ]

0 голосов
/ 22 апреля 2009

Я не могу точно сказать, что именно вы имеете в виду, но все, что вы хотите сделать, это заказать ваши фотографии с идентификаторами, основанными на том, когда элемент был добавлен (самый высокий = самый новый), и уменьшить идентификатор, когда вы нажимаете следующий, таким образом, они можете перейти в очередь просмотра, где бы вы ни находились, и, щелкнув по кнопке «Далее», вы просто перейдете к следующей фотографии в строке.

Edit: Судя по тому, как это выглядит, вам нужно хранить уникальные переменные пользователя в том, что они просмотрели, а что нет.

Из других ваших ответов вы хотите получить его в течение длительного периода времени.

Если вы не хотите сократить его до временного интервала продолжительности сеанса (более простая реализация), вы можете сохранить представления в базе данных, как вы предлагаете.

Чтобы решить вашу проблему с дисковым пространством, вы можете сделать все возможное, чтобы уменьшить его.

Чтобы назвать одного: - Хранить отдельные представления, но, где это возможно, сохранять последовательности представлений. Сжатие в простой форме. Так что пользователь просматривает id 1,2,3,4,6,12,13,15. Ваша таблица просмотров БД может выглядеть так: View

UserID  ImageIDStart  ImageIDEnd
jim        1             4
jim        6            null
jim        12            13
jim        15           null

Возможно, вы захотите разделить эти понятия на две таблицы: «последовательности» и «отдельные представления», которые позволят правильно запрашивать и легче обрабатывать. Вы бы хотели какую-то форму компрессора, которая бы принимала отдельные представления и по возможности конвертировала их в последовательности.

0 голосов
/ 22 апреля 2009

Когда «просмотрщик изображений» закрывается, вы можете просто сохранить идентификатор начала (первую фотографию, которую видит пользователь) и идентификатор фотографии, которую пользователь видел последней.

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

Это не приведет к огромным накладным расходам на файлы cookie / сеансы или базы данных ... и это в основном доказательство глупости ... по крайней мере, относительно точно, вплоть до некоторого момента, когда вы должны решать такие проблемы, как; Что делать, если пользователь заходит в середину диапазона фотографий? Вы можете хранить диапазон идентификаторов, очевидно ..

Тонны таких решений. Просто подумай «умный». И принять во внимание необходимость точности. Если вы поместите запись в базу данных для каждой посещаемой фотографии, у вас будет точное воспоминание о том, что увидел пользователь, но производительность, скорее всего, упадет (со временем, я вас уверяю, резко). Если вам нравится производительность, и я уверен, что ваши пользователи это сделают, я бы посоветовал вам взглянуть на решение, которое может быть менее точным (как описано выше), но учитывает производительность.

0 голосов
/ 22 апреля 2009

Если вы используете сеансы, вы можете отслеживать самый старый «новый» идентификатор фотографии, который просматривал пользователь. Поэтому, когда они нажимают «Далее», вы показываете новейшую фотографию и сохраняете ее идентификатор в сеансе пользователя. Каждый раз, когда они нажимают кнопку «Далее», дайте им новейшую фотографию, которая у вас ниже, чем идентификатор фотографии, которую они имеют в своей сессии. Таким образом, ваша сессия всегда будет знать, где начать показывать им относительно новую фотографию, которую они еще не видели. Вы можете просто продолжать просматривать фотографии с того места, где они остановились.

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

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

Edit:

Думая об этом, вы можете хранить не только самые старые удостоверения личности с фотографией, которые просматривал пользователь, но и самые новые. Таким образом, каждый раз, когда они нажимают «Далее», вы видите, является ли ваша новая фотография более новой, чем самая новая, которую они просмотрели. Если это так, покажите им самую новую фотографию. Если нет, покажите им новейшую фотографию, которая старше, чем их самая старая просмотренная фотография.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...