Когда я делал что-то подобное, все соответствующие ресурсы в любом случае имели идентификационные номера, поэтому я просто использовал это в качестве основы.Тем не менее, это не слишком сложно распространить на нечисловые числа.
Существует баланс между тем, сколько имен хостов вы используете, и слишком много накладных расходов на поиск хостов обгоняет преимущество нескольких имен хостов, поэтому вы внеВероятно, будет около 12, возможно, меньше.
Это само по себе означает, что простой хеш, скорее всего, будет достаточно легко разделяться на заданный диапазон без какой-либо особой необходимости.
Неткодирование приводит к путанице, потому что либо ваше приложение имеет дело с IURI полностью (в этом случае обработка utf-8 уже является проблемой, с которой вы столкнулись), либо нет, и в этом случае каждый символ в UR-экранированной форме пути(то есть имя, используемое в фактическом URI) будет находиться в диапазоне ASCII.
Нет необходимости криптографически защищать или что-то в этом роде, так как это не является угрозой безопасности дляугадайте сервер использовал.Это не будет концом света, если одна или две страницы слегка наклонятся к одному серверу над другим (в любом случае случайность случится с идеальным хэшем).
Следовательно, просто пробегая символы в абсолютномпуть к URI для изображения (все после хоста, начиная с первого и далее), добавляя их целочисленные значения друг к другу, а затем используйте модуль этой части имени хоста.
Если вы хотите ограничитьколичество символов, обработанных для вопросов скорости, затем сделайте это от конца назад, так как это будет иметь наибольшее отклонение.
То, что "button-home.gif" похоже на "button-about.gif" isnЭто не проблема, так как они на самом деле не очень похожи, как видно на примере такого процесса.
Если вы когда-либо увеличите количество используемых имен хостов, попробуйте сделать это кратнымпредыдущее число, так как это приводит к тому, что максимальное количество ресурсов сохраняет свои старые URI.