Aktywne Wpisy

Gojo2323 +646
Bardzo dużo ludzi postuje pod tagami związanymi ze światem według Kiepskich. A ja chciałabym sprawdzić ilu fanów na wykopie serial #rodzinazastepcza czy jest pamiętany i czy nadal go oglądacie. To był taki ciepły i rodzinny gatunek serialu
Najlepsze postaci to pan Jacek, dziadek, Kuba i policjant
#gimbynieznajo
Najlepsze postaci to pan Jacek, dziadek, Kuba i policjant
#gimbynieznajo
źródło: 4b726d378f35c1eb649a8691f02d589e
Pobierz
Antybristler +169
Kurła własnoręcznie zrobiona picka to jest to. Polecam to zamiast płacić 40 zeta januszowi, który jeszcze nawali składników po terminie.
#chwalesie #gotujzwykopem
#chwalesie #gotujzwykopem
źródło: 461252833_1280597443098760_4143408292590671202_n
Pobierz




tl;dr: Mówienie, że w GraphQL cachowanie jest gorsze niż w REST to kłamstwo!!!
Czemu wszyscy mówią, że cachowanie w GraphQL jest słabsze w porównaniu do REST? Nie rozumiem tego.
Są dwie opcje.
1. Piszesz system i nie możesz wprowadzić cachowania.
Przykładowo masz forum i encję post. Pobierasz go:
/api/post/12I co, mogę gdzieś zcachować odpowiedź? Nie, bo ktoś może w każdej chwili edytować post i powinienem dostać nowe dane. Skąd to coś co cachuje ma wiedzieć, żeby opróżnić cache?
Przykładowo konfiguruję Varnish i włączam cachowanie. Nie mogę w tym wypadku trzymać posta o 12 nawet przez sekundę w cachu, bo może się zmienić.
Tak samo jak nie mogę cachować odpowiedz REST, tak samo nie mogę z GraphQL. Nie widzę żadnego ograniczenia.
2. Piszesz coś, bo bardzo rzadko się zmienia i wiesz, że nawet jak się zmieni i wyświetlisz stare dane to nic się nie zmieni.
Przykładowo strona z newsami (których raczej nie edytujesz, tylko dodajesz nowe). Pobierasz np.
/api/news/12Włączam cachowanie np. w:
- warstwie pomiędzy np. w Varnish (ustawiam, żeby wszystkie newsy były cachowane),
- lub ustawię odpowiednie nagłówki HTTP i przeglądarka sobie zcachuje,
- (więcej nie wiem gdzie można włączyć cachowanie... pomijam bezpośrednio frontend i backend)
Takiego czegoś rzeczywiście prosto w GraphQL nie zrobię, bo nie ma nigdzie z domysłu analizy body z POST-ów.
Ale to nie jest wada GraphQL tylko ułomność narzędzi do cachowania.
- Varnish powinien móc analizować body zapytań POST (może się już da?),
- przeglądarki tak samo powinny to obsługiwać (cachować nie tylko GET-y z takimi samymi parametrami, ale też POST-y z takim samym body requesta).
2.b)
Ktoś mógłby powiedzieć, że wada z cachowaniem w GraphQL to to, że mogę definiować co chcę dostać.
Np. najpierw pytam o to:
{news(id: "12") {
name
}
}
I jest to zapisywane w cache.
A potem pytam o to:
{news(id: "12") {
name,
content,
author,
}
}
I tego nie mam w cache.
Ale ten sam jest w REST jak mam dwa enpointy. Najpierw pytam o same nazwy newsów:
/api/news/12/nameA potem o całe newsy:
/api/news/12/fullI też tego nie mam w cache.
Ktoś może powiedzieć, że w REST pyta się od razu o całość. Ale w GraphQL możesz zrobić dokładnie tak samo.
---
Przykładowe linki o cachowaniu:
https://graphql.org/learn/caching/
https://blog.graphqleditor.com/grapqhl-vs-rest-caching/
https://www.moesif.com/blog/technical/graphql/REST-vs-GraphQL-APIs-the-good-the-bad-the-ugly/
https://medium.com/@back4apps/graphql-vs-rest-62a3d6c2021d
@mk321: I taką akcją może invalidować cache dla tego zasobu
- jak w przeglądarce, to nie da się powiadomić przeglądarki jednego użytkownika, że inny użytkownik zrobił edycję i przy następnym wejściu na stronę ma wyczyścić cache (nie mówimy o websocketach, bo mówimy o prostych synchronicznych usługach i np. odświeżeniu strony, a wtedy websocket się urywa),
- w Varnish nie wiem czy jest dostępne API do inwalidacji poszczególnych wpisów w cache,
- (samą implementację cache na