Mam ten widok MVC, który ma listę obrazów, obrazy te są dynamiczne, więc pochodzą od kontrolera. Aby uprościć rzeczy, kontroler ma tylko ten kod:Dlaczego mój kontroler MVC zwalnia podczas wyświetlania obrazów
[OutputCache(Duration = 0, NoStore = true, Location = OutputCacheLocation.None)]
public ActionResult RenderImage(int id)
{
return File(@"C:\Users\Pictures\myimage.png", "image/png");
}
Nie przechowuję danych, aby udowodnić moją rację.
moim zdaniem wnioski 8 zdjęć wszystkie z innym ID, i czasy są straszne:
Czasem szybko dla niektórych obrazów (które są takie same), a na każde odświeżenie jest inaczej, nie można znaleźć w nim wzorca.
Aplikacja jest obsługiwana w IIS i timetaken w dziennikach serwerów pokazuje to serwer, który pochłania czas:
Czy ktoś ma pojęcia, dlaczego tak się dzieje? Jeśli poprosię o obrazy indywidualnie (nie na stronie), zawsze jest to szybkie.
Typowym problemem - który nie wyjaśnia wszystkiego tutaj - jest to, że przeglądarka używa dwóch lub czterech równoległych połączeń w celu pobrania obrazów, ale program ASP.NET zablokuje wszystkie oprócz jednego, ponieważ dostęp do stanu sesji wymaga wyłącznego blokowania. Jeśli nie potrzebujesz dostępu do stanu sesji obrazów, możesz je zadeklarować i pozbyć się wyłącznej blokady. – Codo
Może to być I/O na dysku. Możesz spróbować załadować zawartość C: \ Users \ Pictures \ myimage.png do bajtu [], przechowując go w pamięci i zwracając go, aby sprawdzić, czy to jest problem (oczywiście nie jest to "produkcja", ale to może pomóc w debugowaniu) – Alex
Możliwym powodem może być zablokowana metoda. Postaraj się zrobić wielowątkowe i sprawdź, czy to pomaga? –