Wraz z rozwojem aplikacji oraz zwiększaniem się liczby użytkowników, stajemy przed coraz większymi problem związanymi z wydajnością. Szczególnie istotne jest to w momencie, gdy na przykład ruch na stronie jest na tyle duży, że serwer, z którego korzystamy jest wykorzystywany w 100%. Jednym z sposobów, który w miarę szybko daje spore efekty, jest dodanie mechanizmu cachowania często używanych danych. W tym wpisie pokaże Ci bibliotekę CacheManager (https://github...
Często mówi się, że w programowaniu są tylko dwa trudne aspekty: wygasanie cache'a i prawidłowe nazywanie rzeczy. W tym poście staram się pokazać jak niezajmować się wygasaniem i prawidłowo modelować struktury danych i aplikacji, aby mogły efektywnie korzystać z cache'a.
Architektura 2373 dni, 3 godziny, 1 minutę temu 71 źrodło rozwiń
/ mkurpinski Ostatnio w projekcie tworzonym podczas praktyk spotkaliśmy się z wymaganiem, aby po trzech nieudanych próbach logowania pojawiała się reCaptcha, której poprawne wypełnienie umożliwia przeprowadzenie kolejnej próby. Po krótkim research’u na temat sposobu rozpoznawania użytkownika wybór padł na przypisywaniu do IP ilości niepoprawnych prób logowania. Z kilku możliwych sposobów przechowywania takiej informacji, postanowiliśmy wybrać in-memory caching. In-memory caching jest najprostszą we...
Dzisiaj kilka słów na temat HTMLowych API, które swego czasu szumnie były opisywane, a dzisiaj już widać, że nie do końca się to wszystko sprawdziło i z trzech które dzisiaj opiszę właściwie tylko jedno jest regularnie przez programistów używane.
Kilka wpisów wcześniej pisałem o atrybucie OutputCache. Dla prostych zastosowań sprawdza się dość dobrze, ale bardzo szybko można dostrzec jego ograniczenia i błędy. Przedstawmy najpierw kilka niedogodności związanych z OutputCache.
Ostatnio pierwszy raz w życiu miałem okazję ustawiać nagłówki HTTP odnośnie cachowania. Pogłębiłem trochę temat i okazało się, że trzeba myśleć nie w kategoriach czasu lokalnego, tylko czasu uniwersalnego. Na nasze: zamiast DateTime.Now trzeba używać DateTime.UtcNow. Wstęp: Przechowujesz datę i czas? Może warto w UTC? DateTime ma właściwość Kind typu DateTimeKind: public enum D...
W celu optymalizacji każdy procesor posiada swój cache. Temat jest dosyć rozbudowany bo zwykłe cache jest podzielony na kilka warstw aby przyśpieszyć dostęp do niego. W dzisiejszym w poście chciałbym wprowadzić pojęcie cache line co jest tak naprawdę po prostu wpisem w pamięci podręcznej. Jeśli procesor czyta jakieś dane to umieszcza je w cache line. Cache line to nie tylko jedna, pojedyncza zmienna a na przykład 64 bajty. Jeśli zatem czytamy pojedynczą zmienną Int32, w rzeczywistości procesor przeczyta...
Sztuka programowania 4269 dni, 3 godziny, 18 minut temu 196 źrodło rozwiń
WeakReference i cache Zacznijmy od tego, co to jest cache? Za Wikipedią: Pamięć podręczna (ang. cache) – mechanizm, w którym część spośród danych zgromadzonych w źródłach o długim czasie dostępu i niższej przepustowości jest dodatkowo przechowywana w pamięci o lepszych parametrach. Ma to na celu poprawę szybkości dostępu do tych informacji, które przypuszczalnie będą potrzebne w najbliższej przyszłości. Na początek trochę interfejsów (kontraktów). Dane odc...
Architektura 4594 dni, 3 godziny, 13 minut temu 223 źrodło rozwiń
W każdej aplikacji, wykorzystujacej bazę danych do przechowywania informacji, są elementy/tabele/struktury, których zawartość zmienia się niezmiernie rzadko. W związku z tym, zasadne wydaje się zaimplementowanie mechanizmu przechowywania tychże informacji w “bardziej stałym” obiekcie. Ograniczyło by to komunikację pomiędzy bazą danych i aplikacją, a tym samym zwiększyło wydajność aplikacji. Mechanizm taki można zaimplementować na wiele sposobów. Jednym z nich może być klasa typu Manager do przechowywania...
W .NET 4.0 dodano (mało chyba popularną) klasę MemoryCache służącą do buforowania danych. Wcześniej programiści znali podobną klasę w ASP.NET. Od wersji 4.0 została ona wydzielona i można z niej teraz korzystać we wszystkich typach aplikacji – także WPF i WinForms. Za pomocą MemoryCache można ustawić czas ważności danych w buforze za pomocą czasu absolutnego, priorytetu, monitorów, które unieważniają dane np. na podstawie zmiany pliku na dysku lub tzw. SlidingExpiration – czasu który upłynął od ostatn...
http://msdn.microsoft.com/pl-pl/library/integracja-windows-azure-appfabric-caching-z-sesjami-aspnet
Programowanie rozproszone 4954 dni, 22 godziny, 45 minut temu 28 źrodło rozwiń
Optymalizacja procedur składowanych czy zwykłych zapytań do bazy danych nie jest zadaniem wdzięcznym, ale potrafi dać bardzo wiele satysfakcji. Kto doświadczył zoptymalizowania działania jakiegoś potworka w taki sposób, że po pół godziny pracy czas wykonania spada z 2 minut do 1 sekundy, wie doskonale o czym mówię. A jak uda się tego dokonać bez grzebania się w indeksach to już w ogóle cud/miód/itd. Wtedy z kolei ten, kto to zapytanie pisał oryginalnie, zasługuje na siarczystego liścia... ale akurat w mo...
Bazy danych i XML 4980 dni, 4 godziny, 54 minuty temu 135 źrodło rozwiń
Od dłuższego czasu Microsoft udostępnia kontrolkę do generowania różnego rodzaju wykresów. Możliwości kontrolki są naprawdę bardzo duże. Dzięki niej można wygenerować naprawdę ładne wykresy. Jak wiadomo w aplikacji MVC kontrolka ta nie zadziała w taki sam sposób jak w aplikacji WebFormsowej. Tu nie można zwyczajnie położyć kontrolki na formie, gdyż wymaga ona PostBack'a. Musimy stworzyć obiekt samemu i g...
Autor: Aktualnie pracowałem nad projektem UI do mojego forum. W zasadzie takie w miarę proste rozwiązanie już jest gotowe. Wiec postanowiłem zabrać się za implementacje powoli podstawowych widoków. I tutaj pojawił się pierwszy problem. A mianowicie zarządzanie, kompresja i cachowanie plików CSS i JS. Jak że zwykle mamy w projekcie jakieś stałe skrypty(np. jQuery) które są wykorzystywanie przy każdym widoku wypadało by żeby one były cachowane i skompresowane. Wiec zabrałem się za rozwiązanie tego problemu...
Velocity czyli rozproszony cache - rozproszona pamięć podręczna. Celem Velocity, jest zwiększyć niezawodność i wydajność działania aplikacji poprzez replikację, rozproszenie oraz zapewnienie szybkiego dostępu do danych.
Architektura 5718 dni, 20 godzin, 59 minut temu 41 źrodło rozwiń