Как я могу сократить параметры запроса URL? - PullRequest
1 голос
/ 01 мая 2009

Мой сценарий генерирует очень длинный URL, как показано ниже, и мне интересно, как это можно сократить с помощью алгоритма или метода?

Это длинный URL: http://example.com/script.php?param1=value1&param2=value2&param3=value3&param4=value4&param5=value5

Я хочу сократить это до следующего: http://example.com/script.php?p=430x2920

Как это сделать без кэширования исходной ссылки в базе данных?

Заранее спасибо.

Ответы [ 7 ]

1 голос
/ 01 мая 2009

Вы всегда можете просто использовать один параметр с разделителем, а затем разделить его обратно в коде.

http://example.com/script.php?p=1x2x3x4x5

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

1 голос
/ 01 мая 2009

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

Другими словами, ваш полноразмерный URL-адрес должен иметь такие свойства, чтобы его можно было сжать в более короткий.

Например, я мог бы сжать следующий URL

http://example.com/script.php?param1=saffron&param2=sierra&param3=4

в

http://example.com/script.php?p=p1.sa_p2.si_p3:4

Если бы я знал, что param1 и param2 принимают только определенные ключевые слова, а param3 принимает только цифры.

1 голос
/ 01 мая 2009

Вы можете использовать post для своих значений. Но если вам действительно нужна вся информация внутри URL-адреса, я думаю, вам следует начать переписывать URL-адреса .... здесь - начало переписывания.

1 голос
/ 01 мая 2009

Добавить статические значения к $_SESSION[].

0 голосов
/ 01 мая 2009

Обычно я делаю что-то вроде этого, чтобы уменьшить параметры:

Ваша ссылка:

http://example.com/script.php?param1=value1&param2=value2&param3=value3&param4=value4&param5=value5

Мое избранное:

http://example.com/script.php?params=value1,value2,value3,value4,value5

или http://example.com/script.php?params=value1|value2|value3|value4|value5

0 голосов
/ 01 мая 2009

Проработайте полный набор возможных значений и придумайте двусторонний алгоритм их кодирования / декодирования.

Например, если у вас есть 3 параметра и они представляют собой целые числа, состоящие только из одной цифры, то вместо? Param1 = 1 & param2 = 2 & param3 = 3 вы можете получить? 123 и разделить строку запроса по каждому символу, чтобы получить каждый параметр.

Насколько это возможно, всецело зависит от ожидаемых значений.

0 голосов
/ 01 мая 2009
  • Используйте RESTful интерфейс вместо набора параметров запроса.

  • Храните значения, которые будут сохраняться в течение сеанса на сервере, и хранятся в файле cookie сеанса.

...