Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan Cache-elnéd?

Hogyan Cache-elnéd?

Figyelt kérdés
Egy Webshopot csinálok, csak 'poénból' PHP-ben. A főoldalon megjelenítem a 10 TOP selling terméket. Minden eladás után beszúrok egy táblába az eladott termékek azonosítóit egyesével. Mivel mondhatni, ez egy felesleges kérés, (mármint real-time felesleges) milyen lehetőségek lennének arra, hogy mondjuk ezt 2 óránként frissítse?

2022. máj. 31. 00:24
A kérdező szavazást indított:
Van rá mód, nem felesleges.
Teljesen felesleges.
4 szavazat
 1/10 anonim ***** válasza:
72%
2 órás csúszással megoldani nagyobb macera, mint valós időben.
2022. máj. 31. 00:27
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
39%
Elmented valamilyen állományba a számlálót és az adatbázisban lévőt ezzel az értékkel növeled meg mindig. Cronnal 2 óránként futtatod.
2022. máj. 31. 00:42
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
30%

"Minden eladás után beszúrok egy táblába az eladott termékek azonosítóit egyesével."

Miért? Több millió eladott termék esetén mennyire ront a performancián, ha DB-ből egyesével kell kiszűrnie és rendeznie az adatokat? Hobby projektben nem jönne ki a hiba, de éles környezetben földbe állhat az alkalmazás. :)


"hogy mondjuk ezt 2 óránként frissítse"

Real-time egyszerűbb, mert nem kell ütemezőt beállítani. Ahogy töltöd az adatbázist, azt is olvasod ki a TOP-ok esetén, így indirekt real-time-má válik.

2022. máj. 31. 09:15
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:
Hogyan lenne akkor célszerűbb #3? Az sql-re valahogy nem igazán áll rá az agyam (: Szóval, ha mondjuk a termékek táblában egy eladások száma mezőt csinálok, az azért nem fog működni mert az az All-time top selling tudna lenni, de azt semmi nem csökkenti a vásárlás után 2 órával
2022. máj. 31. 09:49
 5/10 anonim ***** válasza:

Az SQL-re rá kéne érezni, ha már adatbázisműveleteket szeretnél optimalizálni.


"Szóval, ha mondjuk a termékek táblában egy eladások száma mezőt csinálok, az azért nem fog működni mert az az All-time top selling tudna lenni, de azt semmi nem csökkenti a vásárlás után 2 órával"


Miért kéne csökkenteni bármit is? És miért pont a vásárlás után 2 órával?


Ha minden termékhez van egy eladások száma, azt egy SQL utasítással le tudod kérdezni, és rendezni is. Valahogy így:


SELECT termeknev FROM termek ORDER BY eladasok_szama DESC LIMIT 10

2022. máj. 31. 10:28
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
51%
"Az sql-re valahogy nem igazán áll rá az agyam" - hát pedig ha webshopot akarsz fejleszteni, akkor ideje lenne ráállítani :)
2022. máj. 31. 10:43
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
41%
Mivel funból csinálod, ezért nem értem, hogy mit agyalsz rajta enni. Kaptál többféle lehetséges megvalósítási módot is a kérdésedre, csináld meg mindegyiket, legalább lesz tapasztalatod. Ha komolyan akarnád csinálni, akkor az a válasz, hogy ez így hülyeség, de abból nem fog gyakorlati tudás születni, hogy inkább eldobod az ötletet, hogy még neki se kelljen állni.
2022. máj. 31. 11:22
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

#3 vagyok:

Több lehetésges megközelítés lehetséges:


- Kérdés, hogy a legtöbbet eladottat, hogyan szeretnéd. Lehet, hogy overall (összes lehetségeset) szeretnéd, akkor elegendő egy "eladott" számlálót növelni, hogy mennyit adtál el. Ez nem növel az adatbázis méretén se és a lekérdezett tételeken se.

- Ha elmúlt egy hónapban eladott tételek érdekesek, akkor meghatároznék egy időszakot, hogy napra vagy órára nézzük az egy hónapot? Ha napra nézzük, akkor 2 kulcs határozza meg az eladott tételeket. (Nap, Termék) -> Eladott érték. Majd ezt az "Eladott érték"-et növeled/incrementálod. Így nap*termék rekordod lesz csak. Ami öregebb mint egy hónap azt akár kitörölheted, de WHERE-el szűrheted is. Nyilván INDEX-nek be kell állítani a NAP-ot és a TERMÉK-et is, hogy gyorsabb legyen.

- Vagy alapvetően nem relációs adatbázist használsz erre a célra, ha ilyen metrikákat akarsz mérni, hanem mondjuk InfluxDB-t, ami idő-soros adatbázis.

2022. máj. 31. 11:56
Hasznos számodra ez a válasz?
 9/10 2*Sü ***** válasza:
Ha amúgy is tárolod a vásárlásokat mindenféle egyéb adattal együtt – dátum, vevő, fizetési mód stb… –, akkor még lehetne valamiféle ütemezéssel ezekből kinyerni a legtöbb eladott termékeket. De ha jól van indexelve a tábla, akkor ez felesleges kör, a szerver elbírja a valós idejű összesítést, jelentős erőforrást nem fogsz megtakarítani rajta.
2022. máj. 31. 16:01
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
#2 aztán az miért jobb?
2022. máj. 31. 19:29
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!