carica di più e ricerca logica

0

Innanzitutto spero di trovarmi nel posto giusto per porre questa domanda.

Sto costruendo una pagina web che consente all'utente di selezionare un'immagine da un set di 100+. Voglio visualizzarli 6 alla volta e l'utente deve essere in grado di cercare attraverso di essi (ricerca di una chiave preferibile).

La mia prima implementazione ha interrogato il database e restituito i primi 8 e ulteriori set di 8 sono stati caricati quando l'utente ha fatto clic su Carica di più. Il problema si verifica quando l'utente lo cerca e cerca solo le immagini che l'utente ha già caricato.

La mia attuale implementazione comportava il caricamento di tutte le immagini e l'uso di una combinazione css / js per nascondere tutti tranne i primi 8 e ulteriori 8 set non nascosti quando viene richiamato il carico. ma questo ha un effetto notevole sul tempo di caricamento della pagina.

Mi preoccupo che interrogare il database ogni volta che l'utente digita o rimuove un carattere dall'input creerebbe traffico eccessivo dal database.

Qual è il modo più efficiente per consentire agli utenti di caricare più immagini e cercare l'intero set?

    
posta Lonergan6275 08.06.2017 - 17:38
fonte

1 risposta

1

I worry that querying the database every time the user types or removes a character from the input would be creating excessive traffic from the database.

Puoi limitare il traffico al tuo database inviando solo una richiesta al back-end dopo che l'utente ha smesso di digitare per un periodo di tempo (ad esempio 1 secondo) e solo dopo che l'utente ha digitato un numero minimo di caratteri. Credo che sia il miglior design per interrogare il database direttamente dall'input dell'utente. Non è scalabile per caricare l'intero set di immagini. Se si dispone di un indice nel campo di ricerca nel database, queste ricerche dovrebbero essere piuttosto economiche. Se stai facendo un modulo di ricerca a testo integrale, ti suggerirei di avere un esplicito pulsante "cerca" per evitare di travolgere il tuo motore di ricerca full-text.

Se utilizzi un componente JavaScript pre-costruito, probabilmente avrà la configurazione per questo limite di ritardo e di caratteri. Ad esempio, questo campo di input completamento automatico jQuery ha deferRequestBy e minChars per controllare la frequenza con cui le richieste vengono inviati mentre l'utente sta scrivendo.

Per quanto riguarda il caricamento di più risultati, puoi avere un pulsante come hai fatto nella tua prima implementazione oppure utilizzare un sistema di scorrimento infinito . In entrambi i casi, le richieste del database devono avere limit e offset su di esse, in modo che non vengano selezionati tutti i dati ogni volta.

    
risposta data 09.06.2017 - 01:01
fonte

Leggi altre domande sui tag