代码之家  ›  专栏  ›  技术社区  ›  DigitalZebra

减少URL大小的方法?

  •  3
  • DigitalZebra  · 技术社区  · 15 年前

    我想知道,人们使用了哪些策略/方法来缩短他们的url的长度?具体来说,我只需要减少URL中的某些参数,也许不是全部。

    在过去,我们将一些状态数据推入会话。。。但是,这会降低应用程序中的可寻址性(这一点非常重要)。因此,任何能够保持可寻址性的策略都会受到青睐。

    谢谢!

    编辑:

    另外,理想情况下,我们可以将这些转换为POST,但是由于这需要巨大的架构更改,我认为这是不可能的。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Pekka    15 年前

    如果您想在URL中保留完整的状态信息,而不需要在会话中存储数据,或者永久地在服务器端存储数据,我看不出有什么方法可以绕过这个问题。

    你呢 可以

    我唯一想到的是

    • 缩短参数名称( query => q , page => p

    • 如果参数顺序非常静态,则使用mod\u重写目录结构 /url/param1/param2/param3 可能会节省一些字节,因为您不需要使用参数名

    • London => 1 , Paris => 2

    除此之外,我认为在服务器端存储数据(如@Guido已经建议的那样,由随机键标识)是唯一真正的方法。好的一面是你根本没有大小限制:像这样的URL

    example.com/?key=A23H7230sJFC
    

    可以在服务器端“包含”您想要的任何信息。

    当然,不利的一面是,为了让这些url可靠地工作,您必须将数据无限期地保存在服务器上。就像拥有自己的网址缩短服务。。。这是否是一个有吸引力的选择,将取决于总体情况。

    我想差不多了!

        2
  •  3
  •   Guido    15 年前

    • 将数据作为POST参数(在一个隐藏字段中)发送,因此数据将在HTTP请求体而不是URL中发送
    • 将数据存储在数据库中,并来回传递一个密钥(允许您访问相应的数据库记录),这会带来很多可伸缩性问题,甚至可能会带来安全问题。我认为这种方法类似于使用session作用域。
        3
  •  1
  •   David Waters    15 年前

    当它们确实是可导航的参数时,一个好的选择是将这些参数放入URL的第一部分。

    http://example.site.com/ViewPerson.xx?PersonID=123 http://example.site.com/View/Person/123/

        4
  •  1
  •   Phil Calçado    15 年前

    如果URL中的数据是自动生成的,您不能在需要时再次生成吗?

    由于信息不多,很难想出解决方案,但我首先要研究RESTful体系结构在使用超媒体(即链接)保持状态方面的作用。 ( http://tinyurl.com/287r6wk )是一本关于这个主题的好书。

        5
  •  1
  •   Josh    15 年前

    1. 使用服务器传输和HttpContext(PreviousPage in.net2+)访问保存数据的源页的公共属性。
    2. 使用服务器传输以及源页面中的隐藏字段。
    3. 对querystring使用压缩。