-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CacheDecorator pro WebService #44
Comments
Podle mě tam trvalé cache uložiště mezi spojeními nepatří do této knihovny. To ať dělá každý ve svém modelu. Ta cache pro jeden běh PHP mi příjde vhodná, ale jen pro některé služby. Tím by se vyřešili i další otázky jako predávání dat pouze oprávněné osobě, klíč( např: function . $args). Ještě mě napadlo, jestli není lepší tedka dotáhnout verzi 2.0 do stabilního stavu s popisem apod a až pak tam dodělavat další vychytávky. Zatím by se dala už prezentovat a testovat verze 2.0 a vývoj by bežel už na další verzi |
Byl jen navrh toho co se da udelat s jiz existujicimi komponentami. Urcite staci zakladni decorator pro 1 request, dodelat cache je pak trivialni pro kohokoliv.
Tech sluzeb je spousta a muselo by se neustale upravovat se zmenama tech sluzeb, navic rozhodnout co je a co uz neni cachovatelne by take bylo prijnemensim sporne. (takhle z hlavy me napada adresa strediska, zbytek tam jsou spousty osobnich informaci predevsim deti)
To dost mozna je, ale minimalne cast tohoto navrhu ( |
Jako návrh to beru, proto jsem k nemu dopsal svůj pohled.
Asi jsem to myslel tak, že by ani nebylo potreba tam resit jeden fungujici pozadavek nebo sessionToken. Myslel jsem to tak, že pokud se při načtení jedné stránky zeptám 2x na detail jednotky s ID 123, tak si to tu první odpověd uschová jen do pole například pod klic unitDetail_ID_123 a z koncem načítání stránky se vymaže i to docasne pole. To co navrhuju je cache na velmi krátkou dobu, ale může podle mě pomoc a zároveň nijak neohrozit uník dat.
pokud tam mají být ještě velké změny, tak můžem počkat, jen bych nerad, aby jsme to tak dlouho vylepšovali, až to nevydali... ale to zatím nehrozí. |
To je pravda, ale implementaci cache muze pridat kazdy sam a nemas nad ni zadnou kontrolu, proto bych, pro jistotu, pridal nejakou kontrolu do |
Souhlasím s tím, že si nebudou najímat profesionála, ale to podle mě povede jen na to, že to nebudou mít cachované a většina z nich bude využívat WS na svém webu hlavně na přihlášení. Příjde ti to cachování pouze v rámci požadavku jako málo efektivní? nevím jestli tedka uplne chapu, kam míříš |
Návrh na zavedení Taky si myslím, že kešování na delší dobu než jeden request do této knihovny nepatří. A ani v případě kešování jen v rámci jednoho requestu si nejsem jistý, jak to rozumně implementovat - jak by se nakešované údaje invalidovaly? Co když si nejprve vyžádám ze skautISu nějakou hodnotu, pak ji dalším voláním změním a pak zas opět jiná komponenta webu bude chtít to samé číst? |
Například zavolanim metody clearCache Já si tím cachováním v rámci požadavku, také nejsem jistý, ale pokud nějaké, tak podle mě maximálně toto. |
@sinacek To se mi právě vůbec nelíbí - pak na jednom místě po změně dat zapomeneš zavolat |
Cachovani v ramci pozadavku mi prijde pro drtivou vetsinu dostatecne efektivni i bezpecne.
S tim naprosto souhlasim, Pekny interface by vypadal treba takto:
Pocital jsem s zadnou automatickou invalidaci. Doba cachovani zalezi na implementaci cache => neni zalezitost teto knihovny. Muj cil neni aby knihovna implementovala cache nybrz mela zaklad pro to aby se dal jednoznacne implemnetovat. Treba uz kvuli Nette a Symfony balickum. => jednotny zaklad pro Decorator.
Pokud nekdo pise aplikaci ktera intenzivne meni data proste ty cache nepouzije. Proto je navrhuji pomoci decoratoru. Navic kolik % aplikaci data upravuje? |
@xificurk to máš pravdu, že to může být matoucí. Je to problém každé cache @JindrichPilar původně jsem myslel, že tam chceš přidávat i implementaci rovnou do knihovny, ale tedka uz jsem to pochopil a jsem klidně pro interface, který si každý naimplementuje jak bude chtít a jen pokud bude chtít |
Ano, navrhoval jsem i nejakou zakladni implementaci toho |
Něco základního bych sem klidně dal, ale právě složitější cache operace jsou už příliš vzdálené a bude dobré jen pro ně něchat prostor, ale neřešit je. |
Ve vetsi aplikaci, nebo aplikaci hodne modulovane (pouzivajici framework) se casto stava ze se vola nektera funkce nekolikrat a diky slozeni z jednotlivych komponent je ponekud slozitejsi si jiz prenesena data predavat.
Priklad:
Prvni request bude trvat 150ms+ (stazeni wsdl)
Kazdy dalsi 60ms+
Coz dohromady dava 390ms misto 150.
Samozrejme za predpokladu ze je dobre pripojeni, Skautis je nezatizeny a slape rychle.
Coz samo o sobe neni prilis dlouho, ale kdyz se k tomu pricte prace DB, nejake to sahnuti na soubory v kombinaci s mobilnim pripojeni a programatorem zacatecnikem (nebo nemajicim cas optimalizovat) je z toho par sekundovy pozadavek, coz uz je problem.
Navrhoval bych pouziti cache pro jiz prenesena data, podobne jako maji ruzna ORM. Tak aby WebService pri stejnych requestech vracela odpoved z cache.
Implementaci bych navrhl pomoci decorator paternu, aby se dala tato funkce jednoduse pridat a jinak neprekazela.
V knihovne by meli existovat 2 predpripravene Cache implementace
Otazky ktere je potreba prvni zodpovedet:
Ukazka
The text was updated successfully, but these errors were encountered: