2011-03-14 16 views
5

Jaka jest różnica w cenie wykonania z pliku cookieStore do ActiveRecord SessionStore?Wydajność ActiveRecord SessionStore

Domyślnie Ruby on Rails używa pliku CookieStore. Ma to jednak tę wadę, że klient musi mieć włączone pliki cookie.

Zmiana na Active SessionStore wydaje się rozwiązać ten problem. Zastanawiam się nad przełączaniem.

Czytałem, że wydajność jest gorsza przy użyciu ActiveRecord SessionStore. Ale co jest gorsze? Czy użytkownik to zauważy, czy jest to kwestia milisekund? Ktoś widział wyniki testów porównujących 2 opcje?

Jakieś inne powody (nie), aby przejść do ActiveRecord SessionStore?

Odpowiedz

4

Co gorsza, musi wysłać zapytanie do bazy danych, która następnie musi obliczyć odpowiedź, a nie bezpośrednio do pliku cookie po stronie klienta.

Czy to naprawdę takie złe? Masz rację, różnica w wydajności jest w większości przypadków bardzo mała.

Plusy:

Affinity- Jeśli aplikacja internetowa kiedykolwiek rozszerza się do więcej niż jednego serwera, przenosząc swoje sesje do bazy danych może pozwolić na uruchamianie serwerów bez server affinity.

Bezpieczeństwo - Ponieważ przechowujesz tylko identyfikator sesji po stronie klienta, zmniejsza to ryzyko manipulacji danymi przez użytkownika po stronie klienta.

Wady

Performance - Zamiast zapytań do bazy danych, można tylko odczytywać dane sesji/cookies od strony klienta.

+0

Świetnie, spróbuję. –

4

Ale zapis sesji AR zależy również od plików cookie - zapisuje tam identyfikator sesji.

O ile mi wiadomo, nie ma sposobu, aby sesje Railsowe działały z wyłączonymi ciasteczkami.

+0

tak, masz rację, pytanie nie było trafne, ponieważ naprawdę szukałem rozwiązania, które umożliwiałoby sesje bez plików cookie. To niemożliwe. Dodałem powiadomienie do mojej aplikacji, aby zezwalać na pliki cookie, gdy są one zarchiwizowane. dzięki! –