我想写一个tinyurl克隆,并采用如下文本:
https://myfunwebsite.com/coolthing
并将该字符串缩短为:
asdf9SDFs23vbk
我有以下代码:
const buffer = zlib.deflateSync(myString);
const compressed = buffer.toString('ascii');
但是问题是它创建了一个像x?K())0RWOHMII/O/JIQKL??O???
这样的字符串,这对于放入url参数是不好的。我想要的结果字符串只有字母和数字,我怎么做呢?
不。即使您不必担心URL中的任意字节,您也无法压缩像"https://myfunwebsite.com/coolthing"这样的短字符串。这34个字符将被最好的压缩器将扩展为50到100个字节。无损压缩机需要更多的数据才能运行。
然后如果你把它编码成url安全的字符,你已经把它扩展了25%到33%,所以现在你从原来的34个字符增加到60到140个字符。
这就是为什么TinyURL不像你想象的那样工作。它不会压缩。它在服务器上存储完整的URL,然后给你一个代码,它可以找到存储的URL并播放给你。