ugrás a tartalomhoz

RSS és If-modified-since - kompatibilitási lista létrehozása

vbence · 2006. Okt. 10. (K), 15.20
Egy dolog az, hogy SELECT MAX(created) FROM cikk. A kérdés, hogy mi történik a kieső RSS bejegyzésekkel? Az olvasók megtartják az összes valaha kapott bejegyzést (ami nem öregebb a user által kapott korlátnál), vagy mindig a legutolsó letöltött listát használják?

Gondolom melyik így, melyik úgy... Kézenfekvő gyorsítás lenne, hogy csak a megadott (If-modified-since) dátum utáni bejegyzéseket küldje el a szerver.

Így elsőre úgy gondolom lehetetlen a kérésből eldönteni, hogy milyen módon kezeli az olvasó a bejegyzéseket, de ismert program esetén a user-agent alapján ez is megállapítható (lenne). Már csak egy lista kéne a népszerű olvasókról. Az MS felmérésében ezek szerepelnek: NetNewsWire, Firefox Live Bookmarks, Outlook 12, Pluck, NewsFire, Live.com, Opera RSS Reader, Sage, Bloglines, Firefox, RssReader, RSS Bandit, Thunderbird, IE7, Google Reader, LiveJournal, Newsgator online, SharpReader, OnFolio, Newsgator desktop, My Yahoo!, FeedDemon.

Ha valakinek van kedve megragadni párat csinálhatnánk egy listát, azokkal az olvasókkal amik nem törlik azonnal feedből kikerült elemeket - azaz amiknek elég a friss elemeket küldeni.
 
1

user agent sniffing?

zsepi · 2006. Okt. 10. (K), 15.30
Lehet, hogy sávszélességet spórolsz, de
  • különböző verziók máshogy viselkedhetnek
  • a user agent stringet könnyű módosítani
  • normál webes tartalomnál sem illő egy url alatt több különböző tartalmat küldeni, a google ezt bünteti is
  • már JS alatt sem működött igazán
  • olyan leszel, mint a VisualStudio 2003 ASP.NET, ami böngészőtől függően más htmlt generál, aztán azt meg lehet kedvedre formázni CSS-el

s lehetne még folytatni a sort. Biztos ezt akarod csinálni? S ha igen, miért?
2

igen. az

vbence · 2006. Okt. 10. (K), 16.25
Ebben a formában a technika gátat szab a felhasználásnak. Most töltöttem le a Viennát, és a beállítható leggyakoribb fissítés 30 perc. 5 perc még belefér, de 30? Egyértelmű, hogy a protokoll ügyetlensége az, ami ezt a 30 percet indokolja.

Természetesen az oldal egy normál módban működne, csak a megfelelő olvasóknak szolgálá ki ezt a fajta tartalmat. Nem hiszem, hogy RSS-nél bármilyen hátrányt jelenthet, hiszen itt egyértelműen változó tartalomról van szó. A google (kereső) legjobb tudásom szerint nem foglalkozik RSS fájlokkal (az XML-t ugyan indexeli, de plaintext szinten).

Ha új verzió jön ki, azt egyszerűen ismeretlen lehet venni, és normális feedet kaphat. A user agent módosítása nem értem, hogy jön ide.

Az RSS csak tippeket ad a atartalomra. A szabvány nem állítja, hogy minden cikknek szerepelnie kell benne. Ha a bejegyzések száma limitálva van, és te hetente töltöd le, könynen kicsúszhat belőle valami.

Itt csak a feed tartalma változna (bár gondoltam rss/atom váltására is). Ezzel szerintem semmi probléma. Ha ismerjük az egyes olvasók (filozófiai szinten) hogyan értelmezik az RSS mibenlétét, azaz önálló entitásként kezelik a bejegyzéseket, vagy pedig egy listának, ahol az elemek csak a lista részei (kihullás után nincsenek értelmezve).
4

kérdések

zsepi · 2006. Okt. 10. (K), 16.46
Ebben a formában a technika gátat szab a felhasználásnak.

Kifejtenéd? S akkor az eredeti kérdésemre (miért) is válaszolnál. Bár sejtem, hogy PUSH protokolt szeretnél

5 perc még belefér, de 30? Egyértelmű, hogy a protokoll ügyetlensége az, ami ezt a 30 percet indokolja.

Ez a "belefér" a hírforrástól függ. Bár szvsz még a weblabornál is bőven belefér a félóra. Tőzsdeindexnél már valóban más a helyzet. S a protokoll ügyetlensége alatt mit értesz? Hogy PULL? Ha fontos a mihamarabbi információ eljuttatása ahhoz, aki ezt szeretné, akkor csinálj hírlevelet.

Nem hiszem, hogy RSS-nél bármilyen hátrányt jelenthet, hiszen itt egyértelműen változó tartalomról van szó

Itt csak az URI definicója zavar be. Én úgy gondolom, hogy ugyanabban az időpillanatban ugyanarra a tartalomra kellene mutatnia

A user agent módosítása nem értem, hogy jön ide.

Csak annyi, mint ahogy a böngésző user-agent-ét is módosíthatom, egy RSS olvasóét is lehet.

Ha a bejegyzések száma limitálva van, és te hetente töltöd le, könynen kicsúszhat belőle valami.


Ez így igaz, szabi után egy pár napig én is mindig elveszve érzem magam, de nem látom, hogy a user agent sniffing hol segít ezen - erre inkább a személyre szabott RSS csatornák jelentenék a megoldást.

Amúgy a sávszélességet, meg a gyakori full letöltések elkerülése a cache szolgál, bár igaz, nem minden UA veszi figyelembe a HTTP headereket
5

PUSH, PULL

vbence · 2006. Okt. 10. (K), 20.30
Nos olyan modellre gondolok, ahola kliens húzza le X percenként (vagy félóránként).

Az, hogy egy URL mögött egy tartalom jó irányelv, de ez az eset a kivétel. Az "ugyanabban az időpillanatban" dolog kicsit eröltetettnek tűnik. Mondhatnám, hogy nincs két kérés ugyanabban az időpillanatban, de az kekeckedés lenne... :)

A useragent módosítása pedig pontosan erre jó. Ha a szerver egy user-agentnek megfelelő választ ad. Ha módosítjuk a user-agent stringet azért tesszük, hogy azt a választ kapjuk, amit az XY kliens kapna. De épp itt a lényeg az UA megváltozatásában.

A lényeg, hogy senki nem mondja meg, milyen tartalmat kell RSS-elni, ezt a gyakorlat mondja meg. (Lent folytatom...)
3

Érdekes

attlad · 2006. Okt. 10. (K), 16.43
Érdekes ez a If-Modified-Since felhasználatának ötlete. Ezzel egycsapásra meg lehetne oldani (leszámítva azt a csekélységet hogy mindenkinek be kéne építenie a feedkiszolgáló rendszerébe, ami köbö = lehetetlen) szóval meg lehetne oldani azt is, ami engem igencsak zavart régebben, hogy pl. egy hét után frissítek egy feedet akkor ne hiányozzon belőle egy rakás elem. Meg azt az agyatlanságot hogy x időnként keresi a frissítést, ahelyett hogy csak akkor frissítené a reader a hírcsatornákat amikor olvasom. Többek közt ezért is használok webes feedolvasót mert az megoldja ezeket.

Nem vagyok benne biztos hogy minden esetben jelentős sávszélesség spórolást lehetne elérni, statisztikákból kiderülne. Mindenesetre az a reader ami If-Modified-Since-t támogatja tölthetné csak addig a feedet amíg régi elemet nem talál benne, nem?

Hátránya viszont hogy a statikus fájl helyett egy program ami ezt így ki tudná szolgálni jóval lassabb lenne futásidőt nézve.

Amúgy ha ilyet csinálsz, akkor ne csak az új bejegyzéseket, hanem plusz egy régit is küldj, mivel ha minden bejegyzés új, akkor azt veheti a feedolvasó úgy hogy hoppá, itt lehet kimaradtak elemek, így mondjuk gyakrabban kéne ellenőrizni azt a feedet. Amit én írtam program legalábbis így működött.
6

Mindet küldeni vagy csak az újakat?

vbence · 2006. Okt. 10. (K), 23.37
Azért bátorkodtam felhozni a példát, mert a szabvány semmit nem mond arról, miről lehet és miről nem RSS feedet készíteni. A gyakorlat az, hogy az utolsó X bekezdést küldjük el. Ez könnyen cache-elhető, de igen redundáns. Csak azért engedhetjük meg ezt a könnyelmű lusta hozzáállást magunkak, mert a szabvány abszolut nem rendelkezik arról, hogyan viszonyuljon a hivatalos feed tartalma az általa képviselt portál tartalmához.

Szerintem a feed csak az új bejegyzéseket kell hogy tartalmazza, mivel a kliens a régieknek a birtokában van (vagy volt). Volt lehetősége a kliensnek, hogy feldolgozza őket, tárolja őket. Miért kéne a szervernek külön jeleznie: "az elemek még mindig aktuálisak"? És miért kéne ezt azon a buta módon tennie, hogy újra és újra elküld X darab bejegyzést?

Ahogy írtátok, a mostani redundáns módszernek is vannak hiányosságai. Ez sem győződik meg arról, hogy az összes bejegyzés mindenképen eljusson hozzád. Megengedhető, hogy kimaradjon olyan elem, amiről a kiszolgáló valamilyen elv alapján úgy gondolja, nem szükséges elküldenie (pl. nincs benne az utolsó 20ban). Ki mondja, hogy ehhez kell ragaszkodni?

Sajnos a gyakorlat. Léteznek olyan (szörnyen primitív) kliensek, amik nem tárolják a régebbi bejegyzéseket, ehelyett a szervertől várják, hogy elküldje azokat újra meg újra. Őket csak azzal lehet kiszolgálni amit várnak, amivel képesek dolgozni, az utolsó X darab elemet. Sőt, akár feltételezzük minden kliensről, hogy buta, és csak azokat szolgáljuk ki logikusan, amikről tudjuk, hogy megfelel nekik ez a válogatás.

A +1 bejegyzést küldése nem tűnik túl elegánsnak. Inkább, mint egy lépés előe és egy fél vissza. (Ez most olyan pártvezéresen hangzott.. :) Persze, az kérdés, hogy ez az egész az olvasók mekkora részét érinti. Így számok nélkül elég sok a kérdés.
9

Mindet egyszerűbb

attlad · 2006. Okt. 11. (Sze), 10.01
Én a kezdő bejegyzésből arra következtettem hogy azon akarsz további sávszélességet spórolni hogy ha frissült a feed akkor sem a szokásos utolsó X elemet hanem csak a friss elemeket küldöd el. De ha nincs sávszélesség gond akkor nem éri meg szerintem ezzel foglalkozni.

A dolognak meg az a része hogy X-nél több elemet küldesz (ha a kapott If-Modified-Since kisebb mint az X. elem dátuma) könnyen megvalósítható és nem nagyon vet fel kérdéseket.

Szerintem a feed csak az új bejegyzéseket kell hogy tartalmazza, mivel a kliens a régieknek a birtokában van (vagy volt).

Igazándiból a LINK elemmel mint rel="alternate", alternatív verzió van megadva.
10

Több vagy kevesebb bejegyzés küldése

vbence · 2006. Okt. 11. (Sze), 10.38
A sávszélesség kímélése, és így a letöltések gyakoritása lenne a cél. A mailjeim percenként jönnek le, miért ne tehetné meg ezt az RSS is? Sok kliens és sok szerver is támogatja az If-Modified-Since fejléccet, ez a támogatás a szerverek részéről általában kimerül abban, hogy vagy 304 Not Modified agy pedig elküldi az aktuális feedet (16-20k) anélkül, hogy mérlegelné melyek az új bejegyzések. Pedig ez elég kézenfekvő lenne.

Az X darab elemet csak azért kevertem be a dologba, hogy a mostani módszer elég primitív, és nincs igazán logikus oka, hogy ezt használja az ember.

A sok elem kérdése jó ötlet. Ott még csak nem is zavarnak a fenti kompatibilási problémák, viszont valami ésszerű (biztonági) korlátot szivem szerint bevezetnék rá. A baj csak az, hogy elég nehéz megkülönböztetni azt aki szabi után egyszer letölt száztizennégy bejegzést, és azt aki ezt percenként teszi. (Bár az IP talán jó közelítés...)
7

Goba 2004

Hodicska Gergely · 2006. Okt. 11. (Sze), 00.15
Érdekes ez a If-Modified-Since felhasználatának ötlete.

http://weblabor.hu/blog/20040505/rssakadaly


Felhő
8

Lehet rosszul fogalmaztam

attlad · 2006. Okt. 11. (Sze), 01.39
Visszaolvasva egész érthetetlenül fogalmaztam :-/ arra értem hogy érdekes, hogy megoldást adhatna (elméletben) arra is hogy lemaradsz bejegyzésekről ha ritkán frissítesz egy feedet.