quanto traffico è intenso? quali sono le migliori risorse per conoscere lo sviluppo di siti Web con traffico intenso? .. come sono gli approcci?Risorse per imparare come gestire il traffico pesante sito asp.net mvc?
risposta
Ci sono un sacco di principi che si applicano a qualsiasi sito web, irrilevanti della pila sottostante:
- strutture utilizzo HTTP caching. Per uno c'è la cache degli user-agent. In secondo luogo, l'intero backbone Web è pieno di proxy che possono memorizzare nella cache le richieste, quindi utilizzarlo a pieno vantaggio. Una richiesta che arriva anche sul tuo server aggiungerà 0 al tuo carico, non puoi ottimizzare meglio di così :)
- corollario al punto precedente, usa CDN (Content Delivery Network, come CloudFront) per il tuo contenuto statico. CSS, JPG, JS, HTML statico e molte altre pagine possono essere servite da un CDN, salvando il server Web da una richiesta HTTP.
- secondo corollario al primo punto: aggiungere suggerimenti di scadenza cache per contenuti dinamici. Anche una breve durata della cache come 10 secondi farà risparmiare un sacco di hit che saranno invece serviti da tutti i proxy che siedono tra il client e il server.
- Ridurre al minimo il numero di richieste HTTP. Sembra semplice, ma è probabilmente l'ottimizzazione meglio trascurata disponibile. In effetti, le best practice di Yahoo la considerano l'ottimizzazione più alta, vedi Best Practices for Speeding Up Your Web Site.Ecco la lista le loro scommesse pratiche:
- Minimizza le richieste HTTP
- Utilizzare un Content Delivery Network
- Aggiungi un scade o un'intestazione Cache-Control
- Componenti Gzip
- ... (l'elenco è piuttosto lungo in realtà, basta leggere il link qui sopra)
Ora dopo aver eliminato il più possi dai risultati superflui, ti sei ancora lasciato ad ottimizzare le richieste che effettivamente colpiscono il tuo server. Una volta che il codice ASP inizia a correre, tutto pallido rispetto alle richieste di database:
- ridurre il numero di chiamate DB per pagina. La migliore ottimizzazione possibile è, ovviamente, non fare la richiesta al DB per iniziare. Alcuni dicono che 4 letture e 1 scrittura per pagina sono le operazioni che il server più carico dovrebbe gestire, altre dicono una chiamata DB per pagina, altre ancora dicono che 10 chiamate per pagina sono OK. Il punto è che meno è sempre meglio di più e le scritture sono molto più costose delle letture. Rivedere il design dell'interfaccia utente, forse che numero di passaggi in un angolo della pagina che nessuno vede non ha bisogno di essere che accurata ...
- assicurarsi che ogni singola richiesta DB si invia al server SQL è ottimizzato . Osserva ogni singolo piano di ricerca, assicurati di avere il covering indexes corretto, assicurati di non eseguire alcuna scansione della tabella, rivedi la tua strategia clustered index design, rivedi tutto il carico di I/O, la progettazione dello storage, ecc. Ecc. Davvero, non c'è scorciatoia si può prendere lei, devi analizzare e ottimizzare il diavolo dal tuo database, è sarà essere il punto di soffocamento.
- eliminare la contesa. Non avere lettori che aspettano scrittori. Per il tuo stack, SNAPSHOT ISOLATION è un must.
- risultati cache. E di solito questo è il caso in cui il biscotto si sbriciola. Progettare una buona cache è in realtà abbastanza difficile da realizzare. Ti consiglierei di guardare la nota fondamentale su Facebook SOCC: Building Facebook: Performance at Massive Scale. Da qualche parte nella diapositiva 47 mostrano come appare una tipica API di Facebook interna:
.
cache_get (
$ids,
'cache_function',
$cache_params,
'db_function',
$db_params);
Tutto è richiesto da una cache, e se non lo trova, richiesto dalla loro fine MySQL indietro. Probabilmente non inizierai con 60000 servers pensato :)
Sullo stack di SQL Server la strategia di caching migliore è quella basata su Query Notifications. È possibile quasi mescolare con LINQ ...
Definirò il traffico intenso come traffico che attiva il lavoro con risorse intensive. Significa che se una richiesta web attiva più chiamate sql, o tutte calcolano pi con un sacco di decimali, allora è pesante.
Se si restituisce l'html statico, la larghezza di banda è più un problema di quello che un buon server oggi può gestire (più o meno).
I principi sono gli stessi, non importa se si utilizza MVC o meno quando si tratta di ottimizzare per la velocità.
- Avendo un'architettura disaccoppiata rende più facile scalabilità aggiungendo più server ecc
- utilizzare un modello repository nel trasferimento dati (rende aggiungendo una cache più semplice)
- dati cache che è costoso per interrogare
- È possibile scrivere i dati su nella cache , in modo che il client non abbia in attesa dei databas effettivi e commit
Ci sono probabilmente anche più regole di base. Forse puoi dire qualcosa sull'architettura della tua applicazione e quanto carico hai bisogno di pianificare?
MSDN dispone di alcune risorse su questo. This particular article non è aggiornato, ma è un inizio.
Suggerirei inoltre di non limitarsi a leggere sullo stack MVC: molti principi sono multipiattaforma.
- 1. Progetti opensource per imparare asp.net mvc 3
- 2. Risorse per imparare SuiteCRM?
- 3. Come gestire il paging in asp.net mvc?
- 4. Risorse per imparare REXX
- 5. Buone risorse per imparare MacRuby
- 6. Risorse migliori per imparare buildout
- 7. Imparare ASP.NET MVC su Mac OS X
- 8. ASP.NET MVC - Come gestire una password scaduta?
- 9. Risorse per l'apprendimento ASP.NET MVC 2.0
- 10. Miniprofiler per sito Web ASP.NET
- 11. Buone risorse online per imparare l'assembly x86
- 12. Considerazioni sulla codifica ASP.NET MVC ad alto traffico
- 13. Quali sono buone risorse per imparare come gestire build e release?
- 14. Come posso imparare ASP.NET?
- 15. Come ospitare il sito MVC ASP.NET in una sottocartella
- 16. ASP.NET 5 (MVC 6) - Localizzazione risorse
- 17. Dove trovare buone risorse per imparare XAML?
- 18. ASP.Net MVC: gestire più caselle di controllo
- 19. Il sito Web è sotto carico pesante + ROR
- 20. Come integrare axd (Elmah) come componente nel sito ASP.NET MVC
- 21. ASP.NET MVC Dovrei preoccuparmi di imparare prima i Webform?
- 22. Best practice per file di risorse Asp.net MVC
- 23. ASP.NET MVC 3 Il caricamento del sito è estremamente lento
- 24. Laravel può gestire app ad alto traffico?
- 25. Quanto ASP.NET dovrei imparare se il mio obiettivo finale è ASP.NET MVC?
- 26. Gestire l'utente premendo la chiave "Invio" in un sito Web ASP.NET MVC
- 27. Come eseguire lavori periodici su un sito Web ASP.NET MVC?
- 28. Le migliori pratiche per gestire il salvataggio sicuro tramite i post Ajax asp.net MVC 3
- 29. ASP.NET MVC: come gestire gli oggetti null nella vista?
- 30. Come devo gestire l'Autorizzazione/Autenticazione nella mia app Asp.net MVC?
+1 Interessante. –