我想知道URL Shortener是如何工作的,比如他们如何从地址栏中提取文本并将其映射到正确的URL,稍后重定向它.他们使用什么编程语言?他们如何保持映射的历史?他们如何确保缩短网址的唯一性?如果不访问URL,非专业人员如何取消映射?
是否可以像在YouTube(N7Et6c9nL9w)中生成简短的GUID?
怎么做到呢?我想在网络应用中使用它.
给定t.co链接,我如何找到链接解析的位置?例如,如果我有t.co/foo,我想要一个返回domain.com/bar的函数或进程.
首先,我想确保我意识到这一事实,重新发布是一个明智的话题.但是我想听听你的一些意见,你会采取什么方法.
我正在构建一个分布式应用程序,其中节点远程创建由UUID标识的实体.最终,应该在专用的漏极节点处收集所有实体,该节点通过使用这些UUID来存储所有实体.
现在我想创建额外的标识符,这对人类用户来说更方便.编码UUID的Base64仍会创建22个字符的ID,这不适合人类使用.所以我需要像URL缩短服务这样的东西.应用双射函数无济于事,因为它们不会降低信息价值.当然,我知道我需要丢失信息才能缩短身份.而且我也知道任何哈希信息的减少都会增加冲突的可能性.我被卡住了,为了给人类创造更短的ID,减少信息的最合适的方法是什么.
以下是一些先决条件:我将提供通过我的数据存储映射{UUID,缩短ID}的功能.我仍然更喜欢非集中式解决方案.我可能永远不会需要超过大约一百万的ID(~2 ^ 20).
以下是我想到的想法:
还有其他方法吗?有利的是什么?
提前致谢!
现在,这不是严格意义上的URL缩短,但我的目的无论如何,所以让我们这样看.当然,URL缩短的步骤是:
现在,关于第二点.这是我想出的:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
UUID uuid = UUID.randomUUID();
dos.writeLong(uuid.getMostSignificantBits());
String encoded = new String(Base64.encodeBase64(baos.toByteArray()), "ISO-8859-1");
String shortUrlKey = StringUtils.left(encoded, 6); // returns the leftmost 6 characters
// check if exists in database, repeat until it does not
Run Code Online (Sandbox Code Playgroud)
这够好吗?
我正在寻找一个即时的URL缩短器,就像tweetdeck的工作原理一样.我找到了许多jQuery和一般的javascript插件,它们接受一个url并在按下按钮时通过缩短服务(如bit.ly)运行它.但是,我还没能找到一个在飞行中做到这一点.我的第一个问题是这已经存在于某个地方吗?其次,如果没有,那么识别需要在文本框中缩短的URL的最佳方法是什么?我的想法:
思考?
关于URL缩短器以及互联网上其他地方的stackoverflow,这里有很多问题,例如
http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html
但是,有一件事我不明白.例如,http://goo.gl目前使用四个字符.但是,他们声称他们的短网址不会过期.正如关于编码恐怖的文章所述,如果他们无法回收URL,唯一可能的解决方案是在某一点上添加一个额外的角色.
好的,到目前为止一切顺利.4个字符表示大约1500万个唯一地址.对于像谷歌地图这样的东西,我认为这不是很多,如果你不能回收,我猜他们很快就用完了可用的地址.
现在对于我没有得到的部分.在分发地址时,它们开始耗尽未使用的地址.他们必须检查是否尚未发布新生成的地址.这种情况发生的可能性和地址已经在使用中增加了.当然,直接的解决方案是一遍又一遍地生成一个新的URL,直到他们找到一个免费的URL,或直到他们生成了所有150万个替代品.然而,这肯定不是他们实际上如何做到这一点,因为这将是非常耗时的.那么他们如何管理呢?
此外,可能有几个访问者同时要求一个简短的URL,因此他们也必须进行一些同步.但是当需要添加第五个角色时应该如何管理这种情况?
最后,在对http://goo.gl中的URL如何工作进行一些研究时,我当然多次在Google地图上为地图请求了一个简短的URL.它们都不会被使用.但是,当Google严格执行一旦发布的URL未到期的策略时,这意味着系统中存在大量的休眠URL.我再次假设谷歌(以及其他服务)也提出了解决这个问题的方法.我可以设想一个清理服务,它可以回收创建后48小时内未访问过的URL,或者在第一周内回收不到10次的URL.我希望有人也能对这个问题有所了解.
简而言之,我得到了URL缩短器的一般原则,但是当这些URL无法过期时,我发现了几个问题.有谁知道上面提到的问题是如何解决的,还有其他问题吗?
编辑
好吧,所以这篇博客文章揭示了一些事情.这些服务不会随机生成任何内容.它们依赖于底层数据库的自动增量功能,并对结果id应用简单转换.这消除了检查id是否已经存在(它没有)并且数据库处理同步的需要.这仍然使我的三个问题中的一个没有答案.这些服务如何"知道"链接是否在创建后实际使用?
我正在浏览我们的网站分析,并且有大量的t.co网址,这些网址是我们正在进行的促销活动的推介.我试图弄清楚是否有办法通过Twitter API或其他方式将这些转回原始推文.我似乎无法找到一个好的方法来做到这一点,是否有一个?
我现在正在玩Javascript ......我正在缩小一些使用bit.ly来推特的URL,然后我开始考虑一个可以使用他们的API缩小我想要的URL的自动化流程,然后我看了他们的文档,我看到他们只支持PHP(有一些Javascript),但无论如何,我只能使用Javascript进行此操作?
url-shortener ×10
bit.ly ×3
url ×3
javascript ×2
jquery ×2
short-url ×2
twitter ×2
.net ×1
api ×1
c# ×1
hash ×1
java ×1
tinyurl ×1
web-services ×1