用于存储计算目的的典型URL长度(URL-shortener)

时间:2011-05-29 16:40:04

标签: php mysql url storage

在快速google search上阅读了几个点击后,在确定平均网址长度时似乎没有很多一致性。

我知道IE的最大网址长度为2083个字符(来自here) - 所以我有最好的工作时间。

我担心的是我正在用PHP编写一个URL缩短器(similar到另一些questions上的SO),并且想确保我不太可能超过该存储容量。托管它的服务器。

如果所有网址都是IE的最大值,那么2^32将无法轻松适应任何位置 - 它需要2K x 4B ~= 8TB存储空间:不切实际的期望。

如果没有添加修剪功能(即清除“旧的”缩短的网址),那么最安全的计算应用存储空间使用情况的方法是什么?

〜34 characters安全猜测?如果是这样,那么完全填充(使用int类型的主键)数据库将咀嚼292GB的空间(对于可能想要存储的任何元数据,双重146GB)。

这样的应用程序的最佳猜测是什么?

4 个答案:

答案 0 :(得分:21)

如果没有索引整个互联网,这可能是不可知的,但根据Kelvin Tan对a dataset of 6,627,999 unique URLs from 78,764 unique domains的分析,答案是 76.97

  

意思是: 76.97

     

标准偏差: 37.41

     

95%置信区间 157

     

99.5%的置信区间 218

答案 1 :(得分:4)

我不确定什么是典型的,但在我们的请求数据库中有11,000个网址,平均长度为62个字符。我们可能是一个例外,因为我们每个月都会收到来自日本客户的数百件请求。我们的数据库包括数百个包含数百个字符的网址。最长的是一个1689个字符的谷歌翻译链接。

前10名len(producturl): 1689 792 707 693 647 606 574 569 562 560

示例网址647个字符:

http://www.amazon.co.jp/%E9%AD%94%E7%95%8C%E6%88%A6%E8%A8%98%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AC%E3%82%A4%E3%82%A24-%E5%88%9D%E5%9B%9E%E9%99%90%E5%AE%9A%E7%89%88-%E5%A0%95%E5%A4%A9%E4%BD%BF%E3%83%95%E3%83%AD%E3%83%B3-%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89%E4%BB%98%E3%81%8D%E7%89%B9%E8%A3%BD%E3%82%AB%E3%83%BC%E3%83%89-%E3%83%88%E3%83%AC%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%AB%E3%83%BC%E3%83%89%E3%80%8C%E3%83%B4%E3%82%A1%E3%82%A4%E3%82%B9%E3%82%B7%E3%83%A5%E3%83%B4%E3%82%A1%E3%83%AB%E3%83%84%E3%80%8D%E9%99%90%E5%AE%9APR%E3%82%AB%E3%83%BC%E3%83%89%E4%BB%98%E3%81%8D/dp/B0043RT8UO/ref=pd_rhf_p_t_1

为了估算目的,你应该在应用标准差后从某些数据集中推断出可能会扭曲你的平均值的异常值。

答案 2 :(得分:3)

来自RFC 2068第3.2.1节:

  

HTTP协议没有对长度进行任何先验限制      一个URI。服务器必须能够处理它们的任何资源的URI      服务,并且应该能够处理无限长度的URI      提供可以生成此类URI的基于GET的表单。一台服务器      如果URI更长,应该返回414(Request-URI Too Long)状态      服务器可以处理(见10.4.15节)。

     

注意:服务器应该谨慎依赖URI长度        超过255个字节,因为一些较旧的客户端或代理实现        可能不适合支持这些长度。

虽然IE(可能还有大多数其他浏览器)支持更长的URI长度,但我不认为大多数表单或客户端应用程序都依赖于255字节以上的任何工作。您的服务器日志应提供有关您所看到的网址类型的一些统计信息。

答案 3 :(得分:2)

好吧,你不需要知道avarage网址长度。这是猜测,但我认为URL缩短器主要用于缩短长URL。为什么还要缩短一个短暂的? :)

那就是说,还有另外一个问题。一个数据库也会有一些开销,所以你不能只计算一个avarage,并说这是avarage字节大小。

我自己写了一个url shortener,它已经包含了大约45个项目。所以我建议你写你的,当它实际上包含2 ^ 32个URL时,购买8TB硬盘可能不会再造成问题了。 ; - )