Как оказалось, все довольно просто, хотя и не совсем очевидно. Но давайте по порядку. Первым делом идем читать теорию, тобиш стандарты.
В спецификации RFC 2616 (Hypertext Transfer Protocol - HTTP/1.1), в разделе 3.2.1, говорится, что нет никаких ограничений на длину URI (URI — это официальный термин того, что большинство людей называет URL). Также она предупреждает, что URI длиннее чем примерно 255 символов могут не поддерживаться некоторыми старыми клиентами и прокси-серверами (это в 1999-м то году; незнаю насколько это сейчас актуально).
Еще есть спецификация RFC 3986 (Uniform Resource Locator (URI): Generic Syntax), в которой также указывается, что нет никаких ограничений на общую длину URL, за исключением ограничения в 255 символов на название хоста (из-за ограничений DNS).
Итак, максимальная длина URL теоретически может быть неограниченна.
Т.е. если мы хотим хранить ссылки в БД, то нужно быть готовым к ситуации, когда длина URL будет очень большой.
Отлично, с теорией все ясно. А как обстоят дела с практикой?
Практику уже исследовали до нас, потому просто воспользуюсь результатами. Самое последние (и, потому, наиболее актуальное) известное мне исследование проводил ресурс Boutell.Com в 2006-м году. Ихняя рекомендация — не использовать URL длинее чем 2000 символов, поскольку более длинные URL могут вызвать проблемы у наиболее популярных веб-браузерах (так уж сложилось, что наиболее популярными браузерами является семейство Internet Explorer).
На практике, URL длинее чем 2000 символов — проблемный URL.
Ниже приведу некоторые факты, для обрисовки полной картины:
- Internet Explorer всех версий (на данный момент последней является 8-я) поддерживает максимальну длину URL в 2083 символов, но практический лимит — 2048 символов.
- Другие браузеры имеют значительно больший "запас" (FF > 65k, Opera > 200k, Chrome/Safari >> 8)
- Apache имеет ограничение по умолчанию в 8K символов.
- По умолчанию, максимальная длина URL для IIS (Internet Information Server) — 16K.
- Google _уже_ индексирует страницы с URL длиной до 2K символов, но из-за ограничений на сервере самого гугла, пользователь не сможет перейти на нее из результатов поиска (итого, максимальная "юзабельная" длина URL для гугла - 1855 символов)
- Другие поисковики, и вебдевелоперские утилиты ведут себя плохо при размерах URL в 2K