Kom ihåg mig?
Home Menu

Menu


C# asp.net snabba upp sidan

Ämnesverktyg Visningsalternativ
Oläst 2011-09-03, 20:40 #1
Kristoffersens avatar
Kristoffersen Kristoffersen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2005
Inlägg: 93
Kristoffersen Kristoffersen är inte uppkopplad
Medlem
Kristoffersens avatar
 
Reg.datum: Feb 2005
Inlägg: 93
Standard C# asp.net snabba upp sidan

Vilka är era tips för att snabba upp webbsidor (C# ASP.Net). Cashing och annat som Http compress med mera. Dataset eller Datatable? Datalist eller reapeter. Min receptsajt är rätt slö och det finns nog mycket man kan göra. Men vad har ni för tips?
Kristoffersen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-03, 22:20 #2
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Det var en väldigt bred fråga.

Ta först reda på vad som behöver justeras (med t.ex. perfmon). Fixa sedan de värsta flaskhalsarna först.

DataReaders är snabbast men är mer low-level och det kanske inte är något för dig som startar en tråd som den här år 2011. EntityFramework (EF) eller andra ORM:s är mycket lättare att jobba med nuförtiden även om det är ganska lätt att skriva ineffektiva frågor. Med tiden lär man sig vad man ska undvika, hoppas jag. Jag upplever att man fortfarande har bättre kontroll med DataReaders och men produktiviteten tar stryk jämfört med att använda en ORM (jag gillar EF). EF är mycket mer lättjobbat än DataSets (DS) som suger i jämförelse. DS är föråldrat och saknar funktioner som finns i EF. Hur som helst: idag behöver man inte skriva sitt eget datalager utan kan istället köra med t.ex. EF eller NHibernate för att spara tid. Hur omfattande prestandajusteringar man behöver göra beror lite på projektets storlek och ens erfarenhet. För mindre projekt är det fruktansvärt tidseffektivt med ORMs!

Repeater har mindre overhead än datalist men om det gör nån påtaglig skillnad är jag inte rätt person att svara på. Kanske om man har en jäääkla massa repeaters och inte bara ett par stycken per sida men det är en gissning från min sida.

Några frågor som kan vara värda att tänka på ang. optimeringsbiten:

  1. Vad är det som är långsamt?
    • Tunga databasfrågor
    • Konstruktionen av sidor (user controls)
      • Läser du in data från externa källor on the fly (t.ex. RSS-feeds)?
      • Skalar du om bilder eller gör andra lite mer krävande uppgifter on the fly?
    • Front-end (många http-anrop, enorm ViewState, eller onödigt pratig Html?)
    • Har du beräkningar eller algoritmer som kan förbättras?
    • Är projekten kompilerade i debug- eller release-mode? Release-mode är att föredra eftersom kompilatorn kommer försöka lägga in optimeringar. Hur det är i webforms (gamla asp.net) vet jag inte riktigt men i MVC kan det påverka prestandan markant!

  2. Databasen:
    • Görs det många databasanrop?
    • Hämtar du mer data än vad som egentligen är nödvändigt?
    • Finns lämpliga index? Kolla med Tuning advisor om du kör med MSSQL.
    • Är indexen fragmenterade?
    • Råkar du förhindra att frågornas execution plan cachas?
    • Hur används databasen oftast (mest reads eller writes)?
      • Kanske är dags att anpassa databasstrukturen.

  3. Finns det nån sorts caching i dagsläget?
    • Output-cache?
    • Db-cache?


Att minska antalet databasanrop, cacha anrop mot externa källor och slå på db- och/eller output-cachen brukar göra susen.


Man kan också undra om databasen på samma server som webbservern?
Beroende på hur belastningen ser ut kan man argumentera för att de borde ligga på olika burkar. Om de redan gör det - hur ser nätverket och övrig hårdvara ut? Körs något virtuellt?
Vidare kan olika versioner av OS & program sätta gränser för tillgängligt RAM och antal samtidiga anslutningar t.ex.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 04:57.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017