WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Asynkrona anrop - nackdelar? (https://www.wn.se/forum/showthread.php?t=36385)

peterbf 2009-04-21 10:05

Zupp fellas!

Jag jobbar just nu med ett projekt just nu där vi har text på förstasidan likt:

Du har 3 nya gästboksinlägg.
Du har 28 nya vänförfrågningar.

Det jag gör i dagsläget är att genom JavaScript anropa en metod som i sin tur hämtar JSON-data från en Generic Handler och sedan kollar om man har nya gästboksinlägg eller vänförfrågningar.

Min fråga till er är:

Var går gränsen? Hur många anrop ska man köra och hur ofta som max? Detta projekt kommer att ha väldigt, väldigt många medlemmar inom kort och därför vill jag veta detta nu innan man ökar mängden asynkrona anrop.

Peace.

Perben 2009-04-21 11:42

Det låter väl som en typisk funktion som inte behöver vara i strikt realtid. Brukar vara en bra tumregel att periodiskt cacha upp sådan information med jämna intervall, t.ex att man pollar nya meddelanden en gång i minuten eller så. Beror förstås på vad du har för möjligheter på backenden, men direktanrop till databas utan cachning för välbesökta framsidor brukar inte vara någon bra idé.

eliasson 2009-04-21 12:24

Läs om Comet och dess olika tekniker.
Kommer projektet ha väldigt många medlemmar så är det dessutom aktuellt att ha en dedikerad server för just stream-delen.

danjel 2009-04-22 16:57

En tanke att vid skapande av tex gästboksinlägg så uppdateras en statustabell med just denna information

tabellstruktur:
user_id, new_guestbooks, new_friendrequest

Sedan körs ett cronjobb 1 gång per minut som läser in denna info i en minnescache,
då slipper man för mycket I/O operationer och db uppslag..

Inte helt klockrent men har använt den tekniken med gott resultat..

eliasson 2009-04-23 12:27

Citat:

Originally posted by danjel@Apr 22 2009, 14:57
tabellstruktur:
user_id, new_guestbooks, new_friendrequest

En effektiv metod är att skapa en "stream"-tabell vars syfte är endast att distribuera händelser via en stream. Precis som ovanstående talare så läser du av cache istället för köra massa SQL-queries vid varje förfrågan, och har en bakgrundsprocess som läser av stream-tabellen, och modifierar cache som då snappas upp av klientens stream (long polling).

Lycka till.


Alla tider är GMT +2. Klockan är nu 02:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson