Должен ли я создавать пулю на лету или хранить в БД?

Slug является частью URL-адреса, который описывает или заголовки страницы и обычно содержит ключевое слово rich для этой страницы, улучшая SEO. например В этом URL PHP/JS - Создание эскизов на лету или сохранение в виде файлов в последней секции "php-js-create-thumbnails-on-the-fly-or- store-as-files" - это пуля.

В настоящее время я сохраняю slug для каждой страницы с записью страницы в БД. Пул генерируется из поля "Название", когда страница создается и сохраняется на странице. Тем не менее, я рассматриваю возможность создания пули на лету, если я хочу ее изменить. Я пытаюсь понять, что лучше и что сделали другие.

До сих пор я придумывал эти про-точки для каждого из них:

Хранить слизню: - "Быстрее" процессор не нужно генерировать его каждый раз (создается один раз)

Создание на лету: - Гибкий (может корректировать алгоритм пробивки и не нужно восстанавливать всю таблицу). - Использует меньше места в БД - Меньше данных, переданных из БД в приложение

Что еще я пропустил и как это сделать/сделаю?

EDIT:

Я хотел бы прояснить, что похоже на недоразумение в ответах. Пульс не влияет на посадку на правильной странице. Чтобы понять это, просто отрубите или калечите любую часть пули на этом сайте. например:.

PHP/JS - создание эскизов на лету или сохранение в виде файлов

PHP/JS - создание эскизов на лету или сохранение в виде файлов

PHP/JS - создание эскизов на лету или сохранение в виде файлов

приведет вас к одной странице. Слиз никогда не индексируется.

Вам не нужно будет сохранять старые слизни. Если вы приземлились на странице с "старым слипом", вы можете обнаружить это и просто переадресовать 301 на правильно "пробитый". В приведенных выше примерах, если Qaru реализовал его, тогда, когда вы приземлились на любую из ссылок с усеченными слизнями выше, это сравнило бы слизень в url с тем, который был сгенерирован текущим алгоритмом slug, и если бы он отличался от 301 перенаправлять на ту же страницу, но с новым пули.

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

Ответы

Ответ 1

Возможно, вам придется принять во внимание другую вещь, что, если вы хотите, чтобы пользователь/пользователь мог определить свои собственные слизни. Возможно, алгоритм не всегда достаточен.

Если вам так или иначе нужно хранить его в базе данных.

Если нет, я не думаю, что это имеет большое значение, вы можете генерировать их на лету, но если вы не уверены, хотите ли вы их изменить или не позволить им быть в базе данных. На мой взгляд, нет никакой реальной проблемы с производительностью с любым методом (если только "на лету" не очень медленно или что-то в этом роде).

Выберите тот, который является наиболее гибким.

Ответ 2

Не будет ли изменение пули для существующих страниц быть действительно плохой идеей? Он будет разбивать все ваши inlinks для начала.

Измените, следуя Гаю, разъяснение в вопросе: вам все равно нужно учитывать старые слизни. Например: если вы измените свой алгоритм slug, Google может начать видеть несколько версий каждой страницы, и вы можете пострадать от дублирования контента или, в лучшем случае, обменяться PR и SERP между несколькими версиями одной и той же страницы. Чтобы этого избежать, вам понадобится каноническая версия страницы, на которую перенаправляются любые неканонические слизни, и, следовательно, вам понадобится канонический слизень в базе данных.

Ответ 3

Для генерации пули я не думаю, что время генерации должно быть проблемой, если только ваш алгоритм slug не безумно сложный! Точно так же пространство для хранения данных не будет проблемой.

Я бы сохранил слизню в базе данных по той простой причине, что слизняки обычно составляют часть постоянной ссылки, и как только постоянная ссылка находится в дикой природе, она должна считаться неизменной. Наличие способности изменять пул для опубликованных данных кажется плохой идеей.

Ответ 4

Лучший способ обработки слизней - хранить только говорящую часть пули в базе данных и поддерживать часть маршрутизации уникальным идентификатором для динамической генерации. В противном случае (если вы храните весь url или uri) в базе данных, это может стать серьезной задачей переписать все пули в базе данных, если вы передумали, как их вызвать.

Давайте рассмотрим эти вопросы SO slug как пример:

/info/807195/должны-я-Create-A-слизняка-на-лету или-магазин-в-дб

это:

/route/unique-ID/the-speaking-part-thats-not-so-important

Динамическая часть, очевидно:

/route/unique-ID/

И тот, который я буду хранить в базе данных, является говорящей частью:

the-speaking-part-thats-not-so-important

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

И не забудьте установить канонический тег. Если вы заглянете внутрь этого кода страницы, там:

<link rel="canonical" href="#" onclick="location.href='http://stackoverflow.com/info/807195/should-i-create-a-slug-on-the-fly-or-store-in-db'; return false;" />

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