Beh, cosa intendi per abbreviazione URL?
Ci sono tecniche molto diverse. La maggior parte dei siti Web, AFAIK, utilizza la tecnica per inserire la chiave primaria del databse (magari in qualche codifica) nell'URL in una posizione in cui può essere analizzata da un'espressione regolare e semplicemente aumentando il resto con le parole chiave.
Esempio da Amazon: http://www.amazon.de/Bauknecht-WA-PLUS-614-Waschmaschine/dp/B003V1JDU8/
È possibile inserire qualsiasi cosa al posto del nome del prodotto, solo l'ID alla fine è importante.
Tuttavia, è possibile mantenere i collegamenti puliti e verificare se sono corretti e effettuare 301 inoltro all'URL reale o inserire un URL canonico se viene visualizzato un URL errato.
Tuttavia:
Se si vuole fare qualcosa di simile TinyURL, la mia risposta è un no definitivo.
Non è abbastanza buono.
Beh, dipende.
Non è "sicuro". Sarebbe abbastanza facile indovinare gli URL. Un approccio migliore sarebbe utilizzare alcune funzioni crittografiche come SHA-1/MD5.
Quando si tratta di collisioni non posso davvero dirlo. Il GUID è stato progettato per non avere collisioni, ma si stanno utilizzando solo i primi 6 caratteri. Non so cosa rappresentino esattamente nell'algoritmo. Ma sicuramente non è ottimale.
Perché, tuttavia, non si utilizza semplicemente la chiave primaria con incremento automatico del database? Se la sicurezza è importante, devi anche andare con più di 6 caratteri.
su un progetto che ho fatto ho usato qualcosa come
/banca dati-chiave primaria/hash-di-chiave primaria-con-qualche--o-client-informazioni sul token/
In questo modo Potrei cercare direttamente la chiave primaria nel database che era il modo più veloce possibile, ma anche verificare che il link non sia stato scoperto da un bruto forzato dall'hash. Nel mio caso l'hash era la somma SHA-1 del token segreto del client e la chiave primaria.
Per curiosità, perché preoccuparsi di un UUID? Perché, per esempio, non generare solo 5 o più byte da un'istanza Random? –
Ho iniziato con un bit casuale/System.nanoTime/l'indirizzo mac 'bit poi ho capito che uuid ha tutto questo :-) – Bozho
@Bozho potresti prendere in considerazione [codifica Base32 aka Crockford encoding] (http: //www.crockford .com/wrmg/base32.html) in quanto presenta alcuni vantaggi come la rimozione di caratteri potenzialmente ambigui come 0 e la lettera L. Avrete un URL breve più lungo, ma se non avete miliardi, forse ne vale la pena. –