Уменьшите параметры URL до целого или шестнадцатеричного короткого - PullRequest
0 голосов
/ 17 ноября 2018

Мне нужно, чтобы мой URL был короче. URL дает параметры, которые заполняют форму со всеми этими значениями.

* * example.com / 1003-имя модуля par1-par2-Par3-Par4 ....- par19

Мне нужно что-то вроде этого: example.com / модуль-имя-3456de34567

Я пробовал base64_encode ... но результат слишком велик. Функция md5, crypt, hash ... слишком сложна для моих нужд ... Нет необходимости шифровать данные, потому что это часть моей конфигурации, просто нужно сократить URL.

Важно: я не хочу использовать базу данных ...

EDIT # 1 : par1, .., par19 - это только буква или целое число для некоторых параметров hexa color, вот и все, и они создают элементы в форме. Максимальная длина строки = 10 для параметра. иногда я использую только par1, ... par5

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

Что у меня есть: example.com / модуль-имя-51-8-3cb371-пример-dddcdc-696969-на-FFFFFF-3cb371-backend1

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

Спасибо за ваш ответ.

1 Ответ

0 голосов
/ 18 ноября 2018

Если кодировка base64 по-прежнему слишком длинная, то вы не сможете получить большую выгоду от других кодировок, так как символы URI, которые вы можете использовать без процента выхода, очень ограничены.И очевидно, что использование процентного экранирования сделает URL длиннее, а не короче, поэтому вам следует избегать их.

Но есть вероятность, что вы можете сократить длину некодированных данных.Вот несколько вещей, которые вы можете сделать:

  • Цветовые коды могут представлять 2 24 (~ 16 миллионов) различных цветов.Являются ли все эти цвета действительно потенциальным кандидатом на значение параметра?Возможно нет.Например, вы можете отказаться от некоторой точности, кодируя свои цвета только с 3 шестнадцатеричными символами вместо 6, как это можно сделать в CSS.Тогда FFF эквивалентен FFFFFF и 969 равен 996699. Это по-прежнему допускает 4000 различных цветов.Если вы намереваетесь использовать только несколько разных цветов, то для них также может быть использована следующая идея:
  • имена и другие слова (например, «пример», «on», «a» и «backend1»)) не будет полностью случайным.Вы, вероятно, никогда не определите один из этих параметров как «xqzIJ4».Возможно, у вас есть ограниченный набор возможных слов, которые могут встречаться в определенном аргументе.Составьте полный список из них, укажите им порядковый номер (1, 2, ...) и передайте это число (в шестнадцатеричном формате) вместо слова.
  • Кодируйте целочисленные аргументы также в шестнадцатеричном формате, если естьвероятность того, что вам нужно указать большее число
  • Если вы можете применить вышеизложенное и использовать фиксированное количество символов для каждого параметра (шестнадцатеричные числа с нулями для получения фиксированной длины), то вам больше не понадобится дефисразделители.Просто объедините все эти коды.Когда необходимо интерпретировать URL-адрес, вы теперь определите длину каждого аргумента и просто разделите URL-адрес на эти части.

Возможно, не все из них приемлемы в вашем случае, но даже еслиВы можете использовать некоторые, это сократит ваш URL.И тогда вы все еще можете рассмотреть возможность применения к нему кодировки base64, чтобы получить немного больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...