У меня 10 миллионов URL-адресов веб-страниц, и я хочу сохранить их HTML как файл. Операционные системы довольно ограничивают то, что я могу использовать в имени моего файла. Я хочу, чтобы какая-то система сопоставляла URL-адреса с алфавитно-цифровыми представлениями для хранения в базе данных ключа-значения с низкой вероятностью создания повторяющихся записей. Мне нужно решение, которое может масштабироваться, и что либо:URL-адреса для преобразования имени файла
Некоторые схемы кодирования (Windows, например, имеет ограничения, как долго имя файла может быть так слишком большие URL-адреса могут производить большие кодированные строки)
Некоторая особенность stdlib, которая имела бы очень малые шансы на создание дубликатов (и карту random_string => url_path в базе данных с ключом).
я придумал следующие решения:
- Используйте кодирование base64. Это создает большие строки для больших URL-адресов.
- Используйте Secure Random для генерации urlsafe base64. Я не знаю, сколько комбинаций есть, пока я не получу дубликаты записей.
Digest :: SHA1.hexdigest 'foo', похоже, для строк. Что делать, если я хочу вернуть это из хэша SHA1 в обычное «foo»? – daremkd
Поскольку вы упомянули Secure Random, я понял, что вам не нужно возвращать исходную строку из преобразованного имени. Если это не так, тогда ваш вопрос вводит в заблуждение или не имеет смысла. – sawa