Ricerca avanzata querystring dove ci sono circa 20 campi di ricerca

2

Sto creando una pagina di ricerca avanzata dove ci sono circa 20 campi di ricerca per un utente per filtrare la loro ricerca. La mia domanda riguarda la stringa di query, la prassi di sviluppo web standard prevede 20 parametri in una querystring?

I risultati della ricerca mostrano grandi tabelle di dati. Esiste un'alternativa che usi ancora HTTP GET (querystring), se non è standard? Vorrei che gli utenti fossero in grado di aggiungere ai segnalibri le loro ricerche.

    
posta Rayshawn 03.04.2013 - 14:18
fonte

4 risposte

2

Non mi preoccuperei di avere molti parametri in una query. Non ci sono restrizioni sul numero di parametri, solo la lunghezza totale dell'URL (come menzionato da altri). Le query lunghe con molti parametri vengono comunemente utilizzate dai siti Web di grandi nomi. Ad esempio, è facile costruire una query con 15 parametri in Google Maps.

Fintanto che GET ha senso per il tuo caso, e non devi preoccuparti del limite di caratteri, lo userei.

È interessante notare che anche Google Maps non si preoccupa di rompere il limite di 2000 caratteri. Ecco l'URL generato per il mio tour di luoghi con nomi lunghi nell'area di Philadelphia:

link

Questo URL funziona anche nelle versioni recenti di Internet Explorer, quindi forse questo limite non esiste più. Le informazioni sul limite di IE, linkate sopra, risale a una fonte del 2006, quindi il limite potrebbe essere svanito da molto tempo.

Aggiornamento: dopo ulteriori test, ho scoperto che Chrome (!) si strozza su questo lungo URL. Quindi forse dovresti preoccupartene!

    
risposta data 03.04.2013 - 16:12
fonte
1

Sembra un po 'strano avere così tanti elementi, avrei suggerito di utilizzare un post e di inserire il contenuto nei dati inviati.

Hai comunque detto che vuoi essere in grado di contrassegnare la pagina dei risultati, quindi penso che tu debba tenerlo nella stringa di query come stai facendo. Considerare tuttavia che la stringa di query ha una lunghezza massima nella maggior parte dei browser, ad es. IE è limitato a 2048 caratteri, il che potrebbe essere un problema. Vedi - link

    
risposta data 03.04.2013 - 14:45
fonte
0

Come spiegato in una domanda SO correlata , tecnicamente non esiste alcun limite alla lunghezza di un URI, tuttavia IE 8 e di seguito supporta solo fino a 2083 caratteri , quindi se c'è la possibilità che la tua pagina di ricerca possa generare un URL più lungo di quello, tu dovrebbe implementare il bookmarking in un altro modo.

Questa pagina contiene alcuni suggerimenti su come aggirare il limite pratico della lunghezza dell'URL pur consentendo comunque il segnalibro :

  1. If your field names take up too much space, use a fixed field order instead
  2. Squeeze out any field that doesn't really need to be bookmarked
  3. [A]void large decimal numbers - use only as much accuracy as you must, and consider a base-64 representation using letters and digits
  4. In extreme cases, consider using the gzip algorithm to compress your pretty but excessively long URL. Then reencode that binary data in base64 using only characters that are legal in URLs
  5. An alternative is to store the state information in a file or a database. Then you can store only the identifier needed to look up that information again in the URL
    
risposta data 03.04.2013 - 15:55
fonte
0

Normalmente la pratica dovrebbe essere quella di consentire ai parametri di essere tutti nella stringa di query. Tuttavia, si scopre che il limite del browser viene superato, è necessario trovare un sistema alternativo.

Una possibile soluzione potrebbe essere:

  • usa il corpo HTTP POST per inviare i dati arbitrariamente lunghi
  • memorizza questi parametri di ricerca nella cache e genera un ID univoco per esso
  • emettere un reindirizzamento del browser del modulo http: // [your_query_url]? query_id = [generated_id]
  • ora, assicurati che [your_query_url] possa tradurre l'ID nella query utilizzando la cache per generare senza problemi la risposta

Per l'utente, questa sarà una ricerca senza soluzione di continuità e ora avranno una pagina in grado di creare segnalibri. A seconda di altri requisiti del mondo reale che potresti avere, questo potrebbe essere ottimizzato in una certa misura per soddisfare le tue esigenze, ma è un semplice punto di partenza che aggira i limiti del browser.

    
risposta data 03.04.2013 - 16:44
fonte

Leggi altre domande sui tag