Url rewriting 将AWS URL转换为更短的内容(不带数据库)

Url rewriting 将AWS URL转换为更短的内容(不带数据库),url-rewriting,amazon-web-services,hex,ascii,Url Rewriting,Amazon Web Services,Hex,Ascii,我们在我们的网站上提供了一系列图片,这些图片实际上是在AWS上托管的,它们的名称都像0E261DDA-CBB7-4B99-B863-6D7640DC2FD8.jpg。为了保持简单,通过我们的网站访问这些图像的路径基本上是保持图像的名称相同-我们只是去掉破折号,使其稍微短一点 但是,由于我们将通过twitter共享这些图像的路径,我们希望字符串更短一些,但我们不想使用数据库来缩短URL(无论是滚动我们自己的还是使用其他人的)。我宁愿在字符串上使用无损压缩方案 鉴于AWS名称显然只使用十六进制字符,

我们在我们的网站上提供了一系列图片,这些图片实际上是在AWS上托管的,它们的名称都像0E261DDA-CBB7-4B99-B863-6D7640DC2FD8.jpg。为了保持简单,通过我们的网站访问这些图像的路径基本上是保持图像的名称相同-我们只是去掉破折号,使其稍微短一点

但是,由于我们将通过twitter共享这些图像的路径,我们希望字符串更短一些,但我们不想使用数据库来缩短URL(无论是滚动我们自己的还是使用其他人的)。我宁愿在字符串上使用无损压缩方案

鉴于AWS名称显然只使用十六进制字符,将其转换为ascii(删除破折号后)似乎至少会给我们带来一点压缩,并且很容易查找回服务器上的实际路径


有没有人看过一点代码,可以写出一个URL安全的ascii码,相当于前面提到的十六进制字符串

使用更高的基数。十六进制是基数16。您可以使用一些更高的基数(36在url缩短器中很常见,但您可以增加到62(10位数字,26个大写字母26个小写字母)

您的基本16字符串:

0E261DDACBB74B99B8636D7640DC2FD8
在base 36中:

U5LC6FOS2F9E70WW3KAT3KK8
在base 62中(可靠性稍低,区分大小写):


使用更高的基数。十六进制是基数16。您可以使用一些更高的基数(36在url缩短器中很常见,但可以增加到62(10位数字,26个大写字母26个小写字母)

您的基本16字符串:

0E261DDACBB74B99B8636D7640DC2FD8
在base 36中:

U5LC6FOS2F9E70WW3KAT3KK8
在base 62中(可靠性稍低,区分大小写):


您是打算直接从s3/cloudfront提供图像服务?还是希望通过服务器/实例传递URL?通过我们的服务器。因此,用户当前看到,理想情况下,他们会看到您是打算直接从s3/cloudfront提供图像服务?还是希望通过服务器/实例传递URL?通过gh我们的服务器。因此,用户当前看到并且理想情况下他们会看到是的,完全有道理-谢谢!但是为什么base62“不太可靠”?它区分大小写,其中as Base36可以转换为大写,并且仍然可以正确转换。我不认为这是一个大问题,只要你意识到它。@Oscar这应该很容易o无论您使用的是什么平台,都要编写。然而,每一个出现在页面和结果页面中的示例都是用C#编写的……因为该语言有内置函数来为您编写。我还没有在C中看到一个。@Oscar这个概念的核心应该只有几行(仅是基转换和字符串操作)。但是不同的平台有不同的模板来处理http请求。是的,完全有道理-谢谢!尽管base62为什么“不太可靠”?它区分大小写,as base 36可以转换为大写,并且仍然可以正确转换。我不认为这是一个大问题,只要你意识到它无论您使用的是什么平台,都应该很容易编写。然而,每一个出现在页面和结果页面中的示例都是用C#编写的……因为该语言有内置函数来为您编写。我还没有在C中看到任何函数。@Oscar这个概念的核心应该只有几行(只是基本转换和字符串操作)但是不同的平台有不同的样板文件类型来处理http请求。