2013-02-08 77 views
1

我們在我們的網站上提供了一些實際上在AWS上託管的圖像,並且它們全部命名爲0E261DDA-CBB7-4B99-B863-6D7640DC2FD8.jpg 。爲了保持簡單,通過我們的網站獲取這些圖像的路徑基本上保持圖像的相同名稱 - 我們只是將短劃線去掉,使其縮短一點。將AWS網址轉換爲更短的內容(無數據庫)

但是由於我們將通過twitter分享這些圖片的路徑,我們希望字符串更短,但我們不希望使用數據庫來縮短URL(或者滾動我們自己的或使用別人的)。寧願只是在字符串上有一個無損壓縮方案。

鑑於AWS名稱顯然只使用十六進制字符,似乎將其轉換爲ascii(在刪除破折號後)至少會使我們獲得一點壓縮,並且很容易進行查找回到服務器上的實際路徑。

任何人都有/看到一點點的代碼,可以吐出一個URL安全的ascii相當於上述十六進制字符串?

+1

您我直接從s3/cloudfront服務圖像?或者你想通過你的服務器/實例通過URL? – datasage 2013-02-08 17:38:33

+0

傳遞我們的服務器。所以用戶目前看到http://ourcompanyurl.com/?p=0E261DDA-CBB7-4B99-B863-6D7640DC2FD8,理想情況下他們會看到http://ourcompanyurl.com/?p=somethingshorter – Ron 2013-02-08 18:48:55

回答

1

使用更高的基準。十六進制是基數爲16的數字。你可以使用一些更高的基數(36在網址縮寫中很常見,但最多可以有62個(10位數,26個大寫字母26個小寫字母)

您的base 16字符串:

0E261DDACBB74B99B8636D7640DC2FD8 

在底座36:

U5LC6FOS2F9E70WW3KAT3KK8 

在基座62(位較不可靠,區分大小寫):

QhJL1gbuZhsyJOIQ3ia0u 
+0

是的,完全合理 - 謝謝!雖然爲什麼base62'不太可靠'? – Ron 2013-02-08 20:16:30

+0

它區分大小寫,其中基數36可以轉換爲大寫,並且它仍然可以正確轉換。只要你意識到這一點,我不會期望這是一個大問題。 – datasage 2013-02-08 21:48:26

+0

發生這樣的任何示例代碼? – Oscar 2013-02-09 00:04:17