截断编码的URL的最佳方法是什么

时间:2013-05-17 16:21:07

标签: mysql url

我想在我的MySQL数据库中存储URL。列类型为char(255) - 在不更改数据类型的情况下不能大于char(255)。

由于URL可能超过255个字符,我需要在存储到DB之前将其剪切 问题是URL可能是编码的,我需要了解如何在不损坏URL的情况下截断它,稍后我会想要解码它。

我想找到'%' 255个字符前的4个字符。如果存在,从那里切割。如果不是 - 从255个字符中剪切。

我错过了什么吗?有没有更好的方法呢?之前是4个字符就够了吗?

5 个答案:

答案 0 :(得分:3)

如果您担心数据大小,那么您最好的方法就是咬紧牙关并更改架构以允许更多数据。

其他任何东西都只是一个污垢,并且(可能)稍后再回来咬你。

答案 1 :(得分:1)

如果您正在努力使您的网址符合255字符表格列,那么您可以考虑使用网址缩短程序库,如下所示:https://developers.google.com/url-shortener/libraries缩短网址,然后存储它。

答案 2 :(得分:0)

压缩URL的一个好策略是找出常用参数/编码并用特殊字符/代码替换它们。由于URL是编码的,因此可以安全地替换许多特殊字符。

答案 3 :(得分:0)

任何网址截断都会对网址造成“损害”。

不要截断URL,而是考虑不截断URL,而是根据需要将其拆分为多行。

这是一个简单的表格设计:

NotTruncatedUrl
PK    UrlId                Int
PK    FragmentOrder        Int
NN    Fragment             Varchar(255)

注意两列pk。 这允许每个URL有多个片段。

将URL拆分为255个长度的片段(最后一个片段可能小于255)并使用fragmentOrder对它们进行排序。

答案 4 :(得分:0)

简短的回答是 - 不要。

这是一个非常非常糟糕的主意。您不能只用255个字符表示一个URL - 在不影响浏览器可移植性的情况下,URL可以大到2000个左右。将它们限制为255是一个损坏您的数据的kludge。

只是为了进行健全性检查 - 您是否使用VARCHAR与CHAR(255)测量了查询的性能?如果你没有,你可能想要;从固定宽度类型获得的适度性能增益是一个非常合理的机会,不足以证明一个黑客的解决方法。