使用 python 或者 nodejs 都可以。
1
congeec 2016-05-10 22:00:10 +08:00
你只能考虑短链接
|
2
Bryan0Z 2016-05-10 22:03:58 +08:00 via Android
ASCII 当成 unicode 显示,字符数应该可以减到以前的 1/3 ,然后再压缩下,够呛
短链接更适合你 |
3
chairuosen 2016-05-10 22:10:24 +08:00
如果你掌握了这个方法,那么你可以把任意数据拼到 url 里,然后用这个方法转换成 10-12 个字符。无限压缩率?
|
4
murmur 2016-05-10 22:39:42 +08:00
你晓得合法的 url 最长有多长么?压缩到 10-12 ? 100-120 都很了不起了
|
5
Slienc7 2016-05-10 23:05:56 +08:00 via Android
md5 + substr
|
7
Pastsong 2016-05-10 23:34:40 +08:00
@lululau https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1
> Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths. |
8
upczww 2016-05-10 23:48:36 +08:00 via Smartisan T1
找个短链接 api 吧,渣浪的就挺好
|
10
wico77 OP 一个字符有 a-zA-Z0-9, 62 个变化, 62 的 12 次方足够应对现有的互联网的网页 url 了吧
@Slienc7 md5+substr ,这种方法不可逆呀。 |
13
tSQghkfhTtQt9mtd 2016-05-11 00:50:41 +08:00 via Android
@wico77 访问短链接->短链接服务查询对应长链接(你自己写进去的)-> 301/302 Moved
|
15
lslqtz 2016-05-11 01:04:30 +08:00 via iPhone
md5+substr 将 substr 后的放到数据库 url 也放进数据库 ruok
|
17
ob 2016-05-11 07:29:13 +08:00 via Android
@lslqtz 你这方法有点把问题复杂化了,如果单纯只是转 10 个字符串,既然用到本地数据库,为什么不直接弄张对应表,一个 url ,一个自增长的 id ,前面需要的话可以补零。当然多台台服务器同步的另说。
|
20
Havee 2016-05-11 08:32:26 +08:00 1
楼上有人将 url uri 搞混了
|
21
loading 2016-05-11 08:39:11 +08:00 via Android
数据库,一列是原来的 url ,一列是缩短的。
这样楼主应该明白了,并不是压缩。,只是映射关系。 |
22
heaton_nobu 2016-05-11 09:11:00 +08:00
UrlRewrite ,要是自己写就存一份对应关系,不自己写就调用外部 api
|
23
Lucius 2016-05-11 09:22:47 +08:00
如果你们讨论出了方案 请告诉我。。
我想参考你们的方案 设计出把“任意蓝光电影转换成 10-12 个字符串”的算法。 然后去申请诺贝尔物理学奖 |
24
GTim 2016-05-11 09:35:13 +08:00
用自增的话建议 base36[0-9a-z]自家用,基本上足够,然后要保存三元组(id,md5_hash,raw_url)
|
25
dapang1221 2016-05-11 10:24:09 +08:00
@Lucius 看来必须要在开个诺贝尔魔法学奖了 2333
|
26
soland 2016-05-11 10:45:39 +08:00
255 字节
|
27
Thoxvi 2016-05-11 10:47:23 +08:00 via Android
数据库索引?
|
28
dixyes 2016-05-11 11:01:41 +08:00 via Android
我萌人类拍了多少部蓝光电影啊
假定有 1000w 部=1E7 部 吧 12 位 ascii 码有 7.92281625E28 组合 可行 可打印字符的话有 4.75920314E23 组合 似乎也可行(( 可以假定有一种算法可以实现 4.76E23 个数到 1E7 的映射 只不过这个算法做出来目测可能比 1E7 部电影还大 |
29
dixyes 2016-05-11 11:03:08 +08:00 via Android
今年的诺贝尔扯淡学奖是我的了
|
30
lincanbin 2016-05-11 11:04:19 +08:00
你需要一个数据库。
|
31
lincanbin 2016-05-11 11:06:23 +08:00
但是这样也不会是任意 URL ,如果你用大小写字母加数字的话,也就最多映射(26*2+10)^10 个 URL 为 10 位以下的字符。
|