Article View: pl.comp.xml
Article #9452Re: [XSLT] jak zrobić LIMIT wyników ?
From: szomiz
Date: Mon, 06 Aug 2007 12:58
Date: Mon, 06 Aug 2007 12:58
66 lines
4010 bytes
4010 bytes
Użytkownik "John Doe" <spamujWYTNIJTO@op.pl> napisał w wiadomości news:3c23.00000089.46b6f5c2@newsgate.onet.pl... >W jaki sposób zrobić limit wyników zwracanych z bazy XML ? Np 20 wyników na > stronę i linki do wyboru strony. Sposobow jest kilka. Czysto xslt'owo: position(). Ale wtedy nie //x:oferta, tylko konkretna wzgledna sciezka. Swoja droga skad moda na // ? Procesory potanialy? Tyle, ze jest to srednio madre rozwiazanie. Bo jaki jest sens wyciagac zestaw danych dla 100 obiektow, jezeli wiesz, ze wyswietlisz 20? Podaj namiar na dostawce procesorow, ktorych uzywasz... Ja te rzeczy robie nieco inaczej. Bedzie nieco OT, ale co mi tam. 1. Wiesz czego szukasz, wiec pierwszym zapytaniem wyciagasz _tylko_ liste identyfikatorow spelniajacych warunki. 2. Zapamietujesz sobie te liste - na IIS'sie mozna to zrobic metoda brute-force, znaczy nadac nazwe taka jak SQL i zapamietac w zmiennej aplikacyjnej/sesyjnej. 3. Wyniki wyswietlasz przy pomocy drugiego zapytania, ktore prostym .split - .slice - .join wyciaga _dokladnie_ to czego potrzebujesz. 4. Przy "nastepnej" stronie sprawdzasz czy masz odpowiednia zmienna w swoim "cache". Jezeli jest: go to 3, jezeli nie: go to 2. Pytanie: w sesji, czy w aplikacji? Prywatnie jestem wrogiem sesji (zwlaszcza w rozwiazaniach portalowo/informacyjno/referencyjnych). Wiekszosc zapytan uzytkownikow jest bolesnie powtarzalna (co mozna sprawdzic analizujac logi). Ergo: istotna czesc zapytan bedzie sie powtarzac, ergo: trzeba to wykorzystac. I dlatego aplikacyjne. Teraz jeszcze bardziej OT (dlatego cross-post). Jezeli w serwisie dane sa czesciej czytane niz pisane _nie_ma_sensu_ meczyc bazy zadawaniem do niej w kolko tych samych zapytan. Statystycznie rzecz ujmujac o wiele czesciej zdarza sie sytuacja, ze ktos inny o _ten_sam_ zestaw danych od ich ostatniej aktualizacji zapytal, niz ze nikt tego nie zrobil. I nalezy to bezwzglednie wykorzystac. Trzeba tylko pamietac, zeby przy aktualizacji danych pousuwac odpowiednia czesc przykeszowanych wynikow (przy pierwszym zapytaniu sie odtworza). Listy list rozwiazauja problem. Zabawy troche wiecej, ale ile satysfakcji ;-) Mozna pojsc dalej (ale to juz hardcore, wiec niekoniecznie za pierwszym razem) i przy _starcie_ serwisu wczytywac do aplikacji listy identyfikatorow "wyskakujacych" przy standardowych zapytaniach (najczesciej: lokalizacja i kategoria). A pozniej mnozyc tablice (byle nie wszystko przez wszystko, da sie o rzedy wielkosci wydajniej - na pl.comp.lang.javascript napisalem kiedys jak). I ewentualnie zapamietywac wyniki mnozen (ale tutaj jednak z kontrola liczby pamietanych wynikow). Przy tym modelu trzeba pamietac o sporej liczbie drobiazgow. I moze cos o tym napisze, bo codeguru poprosilo mnie o artykul i byc moze to jest wlasnie temat. -- --- -- --- -- --- sz. & Draco - byrnenski pies pasterski http://szomiz.republika.pl/dod/draco/
Technical Details
Message-ID:
<f97602$f0j$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<3c23.00000089.46b6f5c2@newsgate.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> Newsgroups: pl.comp.xml,pl.comp.www.server-side Subject: Re: [XSLT] jak zrobić LIMIT wyników ? Date: Mon, 6 Aug 2007 14:58:48 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 68 Message-ID: <f97602$f0j$1@atlantis.news.tpi.pl> References: <3c23.00000089.46b6f5c2@newsgate.onet.pl> NNTP-Posting-Host: hau2.internetdsl.tpnet.pl X-Trace: atlantis.news.tpi.pl 1186405187 15379 79.187.20.2 (6 Aug 2007 12:59:47 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Mon, 6 Aug 2007 12:59:47 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.3790.2663 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028 X-RFC2646: Format=Flowed; Original MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit