2012-06-23 17 views
6

Quali sono i vantaggi diVantaggi di URL RESTful

http://www.example.com/app/servlet/cat1/cat2/item 

URL

oltre

http://www.example.com/app/servlet?catid=12345 

URL

ci potrebbe essere alcun problema se usiamo primo URL perché inizialmente abbiamo stavano usando il primo URL e passano al secondo URL. Questo è nel contesto di grandi contenuti in continua evoluzione sul sito web. Qui le categorie possono essere infinite.

risposta

2

Una differenza è che il secondo URL non assegna un nome alle categorie, quindi il codice cliente e gli utenti umani devono prima cercare il nome di una categoria per la pagina di mappatura numero, archiviare tali mappature, usarle sempre e aggiorna la lista quando si incontrano categorie precedentemente sconosciute, ecc. Dato il primo URL devi necessariamente conoscere le categorie anche se la pagina dell'articolo non le menziona (ma il sito potrebbe comunque avere comunque bisogno di un elenco di categorie da qualche parte).

Un'altra differenza è che il primo formato codifica due livelli di categorizzazione, mentre il secondo nasconde il numero di livelli. Ciò potrebbe rendere le cose più semplici o più difficili a seconda di quale variabile si desidera che la profondità sia (ora o successiva) e se qualcuno codifica in modo inappropriato codice a profondità a 2 livelli (ad esempio, analizzando gli URL con una espressione regolare catturando le categorie utilizzando due sottogruppi). Naturalmente, lo stesso problema potrebbe esistere se si accoppiano alla profondità attuale delle categorie elencate in una pagina di mappatura id-> category-path in ogni caso ....

+0

Ciao Tony, Grazie per la risposta, potrebbe vedi qualche problemi utilizzando il 1 ° URL se stiamo cambiando dal 2 ° URL al primo URL. E se abbiamo un numero infinito di categorie. – user965884

2

Il primo modulo sarà meglio indicizzato dai motori di ricerca, ed è più cache friendly. Quest'ultimo è sia un vantaggio (puoi ridurre il carico sul tuo server) sia uno svantaggio (non sei necessariamente a conoscenza di persone che visitano nuovamente la tua pagina, e le modifiche alle pagine potrebbero non propagarsi immediatamente agli utenti: un po 'di attenzione deve essere preso per raggiungere questo).

Il primo modulo richiede anche (un po ') elaborazione più pesante per ottenere l'elemento desiderato dall'URL.

Se è possibile controllare la sintassi URL, io suggerirei qualcosa di simile:

http://www.example.com/app/servlet/cat1/cat2/item/12345 

o, meglio ancora, attraverso la riscrittura URL,

http://www.example.com/cat1/cat2/item/12345 

dove 12345 è l'ID di risorsa. Quindi quando accedi ai dati (che avresti comunque fatto), puoi farlo in fretta; e basta verificare che il record corrisponda a cat1, cat2 e item. Sperimenta le impostazioni della cache di pagina e assicurati di inviare ETag (magari in base all'ID?) E le intestazioni Last-Modified, oltre a controllare le richieste di intestazione If-Modified-Since e If-None-Match.

2

Quello che abbiamo qui non è una questione di indicizzazione "migliore" ma di pertinenza.

Così, il primo URL contrassegnerà la pagina come più pertinente per il soggetto (presupponendo la correlazione tra nome di pagina/gatto e argomento).

Ad esempio: diciamo entrambi di voler classificare "scarpe Nike rosse", diciamo (per semplicità) che entrambi abbiamo ottenuto lo stesso "punteggio" su tutti i fattori SEO eccetto URL. Nel primo caso l'URL può essere http://www.example.com/app/servlet/shoes/nike/red-nice e nel secondo http://www.example.com/app/servlet?itemid=12345.

Basta guardare su entrambe le stringhe per intuire quale sia più pertinente ... Il primo ti dice in anticipo "Diamine sì, io sono tutto sulle scarpe Nike rosse" mentre il secondo tipo mormora "Scarpe rosse Nike? Intendevi il codice articolo 12345?"

Inoltre, avere parte del KW nell'URL ti aiuterà a ottenere maggiore rilevanza e ti aiuterà anche a vincere obiettivi "long-tail" senza molto lavoro. (solo avere KW in URL a volte può essere sufficiente)

Ma il problema va ancora più in profondità. Il secondo tipo di URL include parametri e quelli che possono (un 99,9%) porteranno a un problema di contenuto duplicato. Quando si utilizzano i parametri si dovrà rispondere a domande come:

  • Cosa succede per catid inesistente?
  • Esiste una verifica dei parametri? (E come piena prova è?)

ed ecc

Quindi perché scegliere la seconda versione? Perché a volte non hai scelta ... :)

3

In relazione a un'applicazione RESTful, non devi preoccuparti del modello di URL. Quello "migliore" è quello che è più facile da generare per l'applicazione.

In relazione all'indicizzazione e al SEO, mi spiace, ma è improbabile che i motori di ricerca capiscano la tua API ipermedia per poter indicizzarla.

Per ottenere una migliore comprensione per quanto riguarda gli URL, dare un'occhiata a: