Z powodu powolnego działania strony, zacząłem szukać informacji Varnish jako rozwiązania buforującego i mam kilka pytań na temat Google Analytics.Jak radzić sobie z ciasteczkami w stosie Varnish
Jeśli na stronie jest 5 tys. Aktywnych użytkowników (zgodnie z bieżącym raportem ruchu GA), serwer ładuje się na serwerach z backendami do 30-40 +, kolejka startowa pasażera zaczyna się układać i witryna jest prawie bezużyteczna. Zdaję sobie sprawę z powolnych zapytań i pracy z bazami danych, które wymagają lepszej wydajności, ale w tej chwili nie mam zasobów do optymalizacji zapytań i schematu bazy danych, indeksów itp., Więc szukam możliwości dodania lakieru.
stworzyłem schemat aby lepiej wyświetlać stos, oto jak obecny stos wygląda tak: (miejsce obecnie buforuje obrazów/CSS/JS w CDN - Akamai)
ja jak dodać dwie instancje lakieru z przodu serwerów backend do artykułów cache i stos będzie wyglądać następująco:
witryna to serwis informacyjny, a ja patrząc na doradztwo, jak prop skutecznie obsługiwać pliki cookie i buforowanie. W przypadku etapu 1 chciałbym po prostu całkowicie wykluczyć uwierzytelnionych użytkowników i obsługiwać zawartość dynamiczną, ponieważ nie ma wielu jednocześnie uwierzytelnionych użytkowników.
Dezorientacja wynika z plików cookie Google Analytic. Rozumiem, że Google ustawia plik cookie na kliencie za pomocą javascript, a klient komunikuje się bezpośrednio z Google, więc backend nie potrzebuje plików cookie GA wysyłanych przez klienta i można je bezpiecznie usunąć podczas wykonywania podprogramu vcl_recv.
sub vcl_recv {
// Remove has_js and Google Analytics __* cookies.
set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(_[_a-z]+|has_js)=[^;]*", "");
// Remove a ";" prefix, if present.
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");
}
Pytania
- Czy jest to bezpieczne podejście?
- Czy Google nadal będzie prawidłowo śledzić, w tym powtarzających się użytkowników?
- Czy jest jeszcze coś, o czym należy pamiętać w mojej polityce dotyczącej fazy 1?
Ponieważ domyślnie lakier NIE zapisuje w pamięci podręcznej niczego, co zawiera zestaw ciasteczek, czy można bezpiecznie wdrożyć opisany wyżej stos, dodając zasadę, aby usunąć pliki cookie GA? Rozumiem, że bez dopracowania zasad VCL, nie osiągnę wysokiego współczynnika trafień, jednak podczas moich testów wydaje się, że nawet przy domyślnym lakierze z przodu serwera zaplecza, miał 30% trafień, a po przeanalizowaniu tych, widzę większość z nich to pliki js/css i pliki obrazów, więc niektóre pliki statyczne nie są obsługiwane przez Akamai lub nawet Apache, zamiast tego są przekazywane do Passenger/Rails w celu obsługi statycznego pliku. To zdecydowanie musi zostać poprawione.
- Czy lakierowanie poprawi wydajność z domyślnymi ustawieniami?
Jestem nowy w lakierowaniu, więc wszelkie dodatkowe szczegóły/porady dotyczące lakieru lub stosu, który zaproponowałem, są bardzo doceniane.
Dla fazy 2 +
Ponieważ zawartość aktualizowane, mam zamiar wykonać czystki na obu serwerach lakierniczych, wywołane przez serwery zaplecza, gdy stosuje się odmiany, takie jak komentarzu użytkownika, odsłon, etc .
Istnieje wiele zarchiwizowanych artykułów, które nie są aktualizowane, czy można bezpiecznie przechowywać je w pamięci podręcznej na zawsze?
Ponieważ mam zamiar użyć pamięci RAM do przechowywania lakieru, powinienem mieć dodatkowy (trzeci) lakier i użyć dysku do przechowywania, dla jawnie tych zarchiwizowanych stron. Być może dodanie stosu nginx z przodu serwerów lakierów do kierowania ruchu do konkretnej instancji lakieru dla zarchiwizowanych treści? Load Balancer -> Para odwrotnych serwerów proxy Nginx> Para lakierów -> (lakier LB do 8 serwerów zaplecza)
Doceniam również wszelkie porady dotyczące architektury. Jeśli potrzebujesz więcej informacji, by zapewnić lepszą radę, daj nam znać, a z przyjemnością przedstawimy Ci więcej informacji.
Richard, na wstępie chciałbym bardzo podziękować za poświęcenie tak dużo czasu, aby dostarczyć tak szczegółowe wyjaśnienie z dodatkowym materiałem związanym z konfiguracją aplikacji Ruby.Będę współpracować z naszym zespołem programistów i aktualizować post z wynikami testu. Zdecydowanie zadam dodatkowe pytania, ponieważ zaoferowałeś :) – Nerses
Bez obaw. Ważne jest, aby aplikacja i lakier do współpracy. Wciąż jestem całkiem nowy w Varnish, ale jest mnóstwo zasobów na niektóre z naprawdę trudnych problemów, które napotkasz. BTW, nie mamy komentarzy na naszej stronie, dzięki czemu możemy uzyskać wskaźniki trafień w pamięci podręcznej nawet do 85% w godzinach szczytu w ciągu dnia. –
Bardzo dobra odpowiedź. Dzięki. – cherouvim