Динамические URL и индексация. Как лучще?

metrod
На сайте с 11.02.2007
Offline
94
551

Добрый день. Ситуация след. - есть сайт разделы которого имеют такие урлы:

1 страница раздела: /answer/1/ или /answer/31231/

2 и последующие страницы имеют вид: /answer/1/?step=56 или /answer/1/?step=5690114, где 56 - это ID первого комментария на странице с учетом сортировки, от которого идет отсчет комментариев для показа.

Вкратце объясню почему так. Кто сталкивался с базами данных на миллионы записей (речь о mysql) знают о вредности конструкции offset, limit. Чтобы каждый раз не проходить по всей базе и задается параметр step - то есть просто берем N элементов после ID по индексу. В итоге пройтись придется в идеале всего по N элементам. А иначе при offset = 999999 придется сначала пройти все эти 999999 строк и только потом показать наши 10-20. Кому интересно можно почитать об этом на хабре.

Теперь вернемся к нашим урлам. Допустим вчера для 2 страницы выборка была, где первым ID был 56. Сегодня изменилось что-то, первый ID стал 80. То есть урл сменился с /answer/1/?step=56 на /answer/1/?step=80. Хотя для посетителя это все та же 2 страница. Но не для ПС.

Как тут быть? Чтобы не плодить дублей. С тем учетом, что индекс 2 и последующих страниц нужен. Варианты rel="canonical" и clean-param в роботсе.тхт не решают полностью проблемы. Урлы переделать, но step то надо оставлять всегда - без step просто ничего не вернет. Может у кого есть какие мысли, буду признателен - пытался объяснить проблему максимально понятно :)

Joker-jar
На сайте с 26.08.2010
Offline
171
#1

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

Сама пагинация, я имею ввиду URL'ы генерируются, как я понимаю, тоже динамически? То есть при построении ссылок на последующие страницы алгоритм пробегается по всем записям в таблице и с учетом сортировки генерирует ссылки /answer/1/?step=xxxx ? Они каким-то образом кешируются?

metrod
На сайте с 11.02.2007
Offline
94
#2
Joker-jar:
Интересная задачка. В принципе, страницы никуда не деваются, смещается контент в них, у поисковика будет не самая актуальная информация по контенту в них. Возможно, быстробот поможет решить эту проблему, но не уверен. Тут виден некий компромисс технической оптимизации и сео.

Не совсем смещаются. В данном случае (что немного облегчает задачу) сортировка идет только по дате. То есть в идеале на первой, второй и т.д. страницах комментарии не меняются, они добавляются в конец, на последнюю страницу. Таким образом растет число страниц. Но иногда что-то удаляется, переносится, модерируется. Именно поэтому происходит смена урлов - например был набор 1,2,3,4,5 и степ=5, стало 1,2,3,5,6 и степ=6 получился.

Joker-jar:
Сама пагинация, я имею ввиду URL'ы генерируются, как я понимаю, тоже динамически? То есть при построении ссылок на последующие страницы алгоритм пробегается по всем записям в таблице и с учетом сортировки генерирует ссылки /answer/1/?step=xxxx ? Они каким-то образом кешируются?

Да динамически, но есть только кнопки вперед-назад. Постраничной навигации нет. Иными словами урл 3 страницы известен только на 2. Только это и позволяет делать быструю выборку - по всем записям бегать не приходится. Выбираются след. N после id, который в степ. Там индекс сделан. То есть прыгаем сразу на 999999 элемент и с него выбираем N нужных.

Кеширование решит задачу, но придется каждый раз при изменениях сбрасывать его. В этом случае можно вообще перейти на урлы вида /answer/1/pageN/ например, где N - 7,8,9. Думаю программист сделает, но пока хочется попробовать иначе как-то.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий