<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentarze do: Wtyczki do Firefoxa, które musi posiadać każdy webmaster</title>
	<atom:link href="http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 12:45:22 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Autor: MariuszT</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2796</link>
		<dc:creator>MariuszT</dc:creator>
		<pubDate>Mon, 24 Aug 2009 12:27:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2796</guid>
		<description>Niestety jedyne co mi przychodzi teraz do głowy to to: http://www.zyxist.com/pokaz.php/formaty_danych_benchmark

Oglądałem też jakieś benchmarki w zagranicznych serwisach ale już nie pamiętam co i gdzie. W sumie to nawet nie musiałem szukać info na ten temat bo na przestrzeni kilku ostatnich lat wielokrotnie napotykałem różnego rodzaju teksty i porównania gdzie zserializowane dane zawsze wiodły prym.</description>
		<content:encoded><![CDATA[<p>Niestety jedyne co mi przychodzi teraz do głowy to to: <a href="http://www.zyxist.com/pokaz.php/formaty_danych_benchmark" rel="nofollow">http://www.zyxist.com/pokaz.ph....._benchmark</a></p>
<p>Oglądałem też jakieś benchmarki w zagranicznych serwisach ale już nie pamiętam co i gdzie. W sumie to nawet nie musiałem szukać info na ten temat bo na przestrzeni kilku ostatnich lat wielokrotnie napotykałem różnego rodzaju teksty i porównania gdzie zserializowane dane zawsze wiodły prym.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: ecco</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2795</link>
		<dc:creator>ecco</dc:creator>
		<pubDate>Mon, 24 Aug 2009 12:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2795</guid>
		<description>Mariusz, napisałeś:
&quot;Przed podjęciem decyzji jak taki system cache ma wyglądać sporo poczytałem na ten temat.&quot;
czy mógłbyś w związku z tym podać linki do swoich lektur? :)</description>
		<content:encoded><![CDATA[<p>Mariusz, napisałeś:<br />
&#8222;Przed podjęciem decyzji jak taki system cache ma wyglądać sporo poczytałem na ten temat.&#8221;<br />
czy mógłbyś w związku z tym podać linki do swoich lektur? <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: MariuszT</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2762</link>
		<dc:creator>MariuszT</dc:creator>
		<pubDate>Thu, 06 Aug 2009 09:27:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2762</guid>
		<description>Tak, jest dodatkowa liczba przy stronicowaniu komentarzy żebym w przyszłości mógł łatwo wprowadzić stronicowanie pojedynczego artykułu i żeby linki się już nie zmieniły. Po prostu zaprogramowałem to na przyszłość.

W bazie można różnie kombinować ale jeżeli masz cache to ja bym zrobił zwyczajne pole TEXT i jakiś znacznik rozdzielający podstrony. Potem explode i wygenerowanie cache. Gdyby nie było cache to bym się zastanawiał nad poprawą wydajności ale jeżeli jest cache to jedno explode przy generowaniu nie zaszkodzi :) Zwłaszcza, że tak będzie najłatwiej dla osób, które mają wprowadzać tekst. Wstawi sobie znacznik i wie, że mu stworzy następną podstronę.

Dla zajawki mam osobne pole w bazie. Chociażby dlatego, że nie zawsze jest zajawka a czasami jest tylko zajawka.</description>
		<content:encoded><![CDATA[<p>Tak, jest dodatkowa liczba przy stronicowaniu komentarzy żebym w przyszłości mógł łatwo wprowadzić stronicowanie pojedynczego artykułu i żeby linki się już nie zmieniły. Po prostu zaprogramowałem to na przyszłość.</p>
<p>W bazie można różnie kombinować ale jeżeli masz cache to ja bym zrobił zwyczajne pole TEXT i jakiś znacznik rozdzielający podstrony. Potem explode i wygenerowanie cache. Gdyby nie było cache to bym się zastanawiał nad poprawą wydajności ale jeżeli jest cache to jedno explode przy generowaniu nie zaszkodzi <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Zwłaszcza, że tak będzie najłatwiej dla osób, które mają wprowadzać tekst. Wstawi sobie znacznik i wie, że mu stworzy następną podstronę.</p>
<p>Dla zajawki mam osobne pole w bazie. Chociażby dlatego, że nie zawsze jest zajawka a czasami jest tylko zajawka.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Michał</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2761</link>
		<dc:creator>Michał</dc:creator>
		<pubDate>Thu, 06 Aug 2009 09:18:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2761</guid>
		<description>Zauważyłem, ze przy stronicowaniu komentarzy dodajesz pewną dodatkową liczbę, jak się domyślałem to numer strony artykułu.

W cache można dawać pliki 1.php, 2.php, 3.php ale jak zrobić to w bazie. Ja na tekst artykułu mam pole longtext. Dotychczas na zajawkę używałem dodatkowej komórki short. Ale mi się wydaje, ze to nie ma sensu.

Myślę, że można dodawać &lt;!-- Short --&gt;, i do tego komentarza miałbym zajawkę, gdybym chciał dzielić tekst na podstrony to nie działoby się to po ilości znaków/wyrazów, tylko spreparowałbym znacznik w FCKeditor i dawałby &lt;!-- Page --&gt;. Skrypt dzieliłby tekst na podstrony i gitara.

Co o tym myślisz jako doświadczony programista?</description>
		<content:encoded><![CDATA[<p>Zauważyłem, ze przy stronicowaniu komentarzy dodajesz pewną dodatkową liczbę, jak się domyślałem to numer strony artykułu.</p>
<p>W cache można dawać pliki 1.php, 2.php, 3.php ale jak zrobić to w bazie. Ja na tekst artykułu mam pole longtext. Dotychczas na zajawkę używałem dodatkowej komórki short. Ale mi się wydaje, ze to nie ma sensu.</p>
<p>Myślę, że można dodawać <!-- Short -->, i do tego komentarza miałbym zajawkę, gdybym chciał dzielić tekst na podstrony to nie działoby się to po ilości znaków/wyrazów, tylko spreparowałbym znacznik w FCKeditor i dawałby <!-- Page -->. Skrypt dzieliłby tekst na podstrony i gitara.</p>
<p>Co o tym myślisz jako doświadczony programista?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: MariuszT</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2760</link>
		<dc:creator>MariuszT</dc:creator>
		<pubDate>Wed, 05 Aug 2009 22:50:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2760</guid>
		<description>Z paginacją w cache jeszcze się nie musiałem bawić ale prędzej czy później stanę przed tym problemem dlatego wstępnie mam przemyślaną sprawę. Oprzyjmy to na przykładzie artykułów bo zamierzam w przyszłości wprowadzić mechanizm dzielenia długich artykułów na podstrony.

Ja to widzę tak, że każdy artykuł ma swój katalog (tak jest teraz u mnie) a tam pliki z cache np. 1.php, 2.php, 3.php itd. W każdym pliku jedna strona i informacja o ilości wszystkich podstron. W ten sposób będę mógł wyświetlić odpowiednią podstronę i wygenerować linki do innych podstron. Oczywiście jeżeli pliku nie będzie to znaczy, że takiej podstrony nie ma i ktoś musiał ręcznie wpisać błędny numerek.

Ale ostrzegam, że to tylko takie wstępne przemyślenia, może będą zweryfikowane gdy usiądę do problemu :)

Serializacja jest szybka. Poza tym wygodniej jest gdy ma się klucze tekstowe, przy kluczach liczbowych można się pogubić w kodzie. Jak bardzo chcesz mieć małe pliki to w serializowanej tablicy również możesz użyć kluczy liczbowych, wtedy strata w objętości pliku będzie minimalna a skrypt zadziała szybciej. Ale moim zdaniem gra nie jest warta świeczki. Nawet przy kluczach tekstowych różnice w objętości cache będą naprawdę minimalne.

A tak swoją drogą to urlencode powoduje zamianę wszystkich niealfanumerycznych znaków na %XX gdzie XX to liczba. Tak więc naprawdę nie rozumiem dywagacji na temat rozmiarów plików skoro zastosowana przez Ciebie metoda w skrajnych przypadkach może wygenerować znacznie większy plik niż ten z zserializowanymi danymi :)

PS
Moje funkcje do cache są na tyle uniwersalne, że serializacja to jedynie mój wybór ale nic nie stoi na przeszkodzie aby użyć innego sposobu. Nie ma tu żadnych ograniczeń.</description>
		<content:encoded><![CDATA[<p>Z paginacją w cache jeszcze się nie musiałem bawić ale prędzej czy później stanę przed tym problemem dlatego wstępnie mam przemyślaną sprawę. Oprzyjmy to na przykładzie artykułów bo zamierzam w przyszłości wprowadzić mechanizm dzielenia długich artykułów na podstrony.</p>
<p>Ja to widzę tak, że każdy artykuł ma swój katalog (tak jest teraz u mnie) a tam pliki z cache np. 1.php, 2.php, 3.php itd. W każdym pliku jedna strona i informacja o ilości wszystkich podstron. W ten sposób będę mógł wyświetlić odpowiednią podstronę i wygenerować linki do innych podstron. Oczywiście jeżeli pliku nie będzie to znaczy, że takiej podstrony nie ma i ktoś musiał ręcznie wpisać błędny numerek.</p>
<p>Ale ostrzegam, że to tylko takie wstępne przemyślenia, może będą zweryfikowane gdy usiądę do problemu <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Serializacja jest szybka. Poza tym wygodniej jest gdy ma się klucze tekstowe, przy kluczach liczbowych można się pogubić w kodzie. Jak bardzo chcesz mieć małe pliki to w serializowanej tablicy również możesz użyć kluczy liczbowych, wtedy strata w objętości pliku będzie minimalna a skrypt zadziała szybciej. Ale moim zdaniem gra nie jest warta świeczki. Nawet przy kluczach tekstowych różnice w objętości cache będą naprawdę minimalne.</p>
<p>A tak swoją drogą to urlencode powoduje zamianę wszystkich niealfanumerycznych znaków na %XX gdzie XX to liczba. Tak więc naprawdę nie rozumiem dywagacji na temat rozmiarów plików skoro zastosowana przez Ciebie metoda w skrajnych przypadkach może wygenerować znacznie większy plik niż ten z zserializowanymi danymi <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>PS<br />
Moje funkcje do cache są na tyle uniwersalne, że serializacja to jedynie mój wybór ale nic nie stoi na przeszkodzie aby użyć innego sposobu. Nie ma tu żadnych ograniczeń.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Michał</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2759</link>
		<dc:creator>Michał</dc:creator>
		<pubDate>Wed, 05 Aug 2009 14:05:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2759</guid>
		<description>A jak z paginacją w cache?
Stronicujesz dane na podstawie folderów, tzn, ze pobierasz listę wszystkich plików w folderze np Aktualności i je stronicujesz, czy masz zapisaną gdzieś w pliku listę artykułów. Drugie rozwiązanie jest chyba gorsze.

Nasuwa mi się pytanie: Po co serializować tablicę. Jest to wygodne, ale wykorzystuje duży zasób danych, bo klucze tej tablicy są również zapisywane w pliku, a po co.

ja w swoim cache zrobiłem tak, że odpowiednia funkcja przepuszcza wszystkie elementy tablicy przez urlencode i pomiędzy elementami dodaje separator, który ma odpowiednik w urlencode(żeby uniknąć niespodzianki). Taki plik o wiele mniej zajmuje(nie jest to jakaś zaskakująca wielkość, ale zawsze mniej). przy odczytaniu cache funkcja tworzy tablice przez explode i elementy tablicy przepuszcza przez urldecode. W ten sposób mamy tablicę danych o kluczach 0, 1, 2, 3... itd.

Nie wiem, które rozwiązanie jest lepsze. Moje zużywa mniej pamięci na dysku, ale więcej mocy obliczeniowej. ;P</description>
		<content:encoded><![CDATA[<p>A jak z paginacją w cache?<br />
Stronicujesz dane na podstawie folderów, tzn, ze pobierasz listę wszystkich plików w folderze np Aktualności i je stronicujesz, czy masz zapisaną gdzieś w pliku listę artykułów. Drugie rozwiązanie jest chyba gorsze.</p>
<p>Nasuwa mi się pytanie: Po co serializować tablicę. Jest to wygodne, ale wykorzystuje duży zasób danych, bo klucze tej tablicy są również zapisywane w pliku, a po co.</p>
<p>ja w swoim cache zrobiłem tak, że odpowiednia funkcja przepuszcza wszystkie elementy tablicy przez urlencode i pomiędzy elementami dodaje separator, który ma odpowiednik w urlencode(żeby uniknąć niespodzianki). Taki plik o wiele mniej zajmuje(nie jest to jakaś zaskakująca wielkość, ale zawsze mniej). przy odczytaniu cache funkcja tworzy tablice przez explode i elementy tablicy przepuszcza przez urldecode. W ten sposób mamy tablicę danych o kluczach 0, 1, 2, 3&#8230; itd.</p>
<p>Nie wiem, które rozwiązanie jest lepsze. Moje zużywa mniej pamięci na dysku, ale więcej mocy obliczeniowej. ;P</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: MariuszT</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2758</link>
		<dc:creator>MariuszT</dc:creator>
		<pubDate>Wed, 05 Aug 2009 08:55:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2758</guid>
		<description>@Michał - jak tylko będziesz miał jakieś pytania to pisz :)

@kmg - Przed podjęciem decyzji jak taki system cache ma wyglądać sporo poczytałem na ten temat. Kolesie robili testy między innymi zserializowanych danych, szybkości odczytu plików ini czy includu pliku z gotowym kodem PHP z wygenerowaną tablicą. Wszystkie testy (często niezależne) wskazały jednoznacznie, że serializacja jest najszybsza. Na drugim miejscu plasują się pliki ini.

Czemu się tak dzieje? Bo w tych przypadkach nie ma konieczności uruchamiania parsera PHP przy pobieraniu danych. Przy serializacji uruchamiamy tylko jedną funkcję a przy ini korzystamy z tych samych mechanizmów, które są odpowiedzialne między innymi za parsowanie pliku konfiguracyjnego php.ini.

Oczywiście najszybsza metoda to pewnie wygenerować czysty kod HTML, zapisać go do pliku a potem zaincludować czy tam pobrać jakąś funkcją (do sprawdzenia, też mi się nie chce :P ). Tylko to jest strasznie niewygodne rozwiązanie bo niewiele z takim cache możesz zrobić, zmienisz coś na stronie i cały cache trzeba generować od nowa.

A tak sobie deserializuję i mam gotową tablicę PHP, którą mogę dowolnie obrabiać.

Wszystko zależy od potrzeb. Na upartego w ogóle można generować całe pliki HTML i przy wyświetleniu strony nawet nie odpalać PHP. Ale ja raczej aż takich kombinacji nie potrzebuję :) Profilowałem nasztomaszow.pl i strona generuje praktycznie żadne obciążenie. Przeważnie wszystko wykonuje się w kilka ms. Dla porównania czysta instalacja Drupal (czyli taka, która właściwie nic nie ma...) uruchamia się u mnie kilkaset ms. Nie wspomnę co się dzieje przy podobnie do nasztomaszow.pl rozbudowanym serwisie na Drupalu....</description>
		<content:encoded><![CDATA[<p>@Michał &#8211; jak tylko będziesz miał jakieś pytania to pisz <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>@kmg &#8211; Przed podjęciem decyzji jak taki system cache ma wyglądać sporo poczytałem na ten temat. Kolesie robili testy między innymi zserializowanych danych, szybkości odczytu plików ini czy includu pliku z gotowym kodem PHP z wygenerowaną tablicą. Wszystkie testy (często niezależne) wskazały jednoznacznie, że serializacja jest najszybsza. Na drugim miejscu plasują się pliki ini.</p>
<p>Czemu się tak dzieje? Bo w tych przypadkach nie ma konieczności uruchamiania parsera PHP przy pobieraniu danych. Przy serializacji uruchamiamy tylko jedną funkcję a przy ini korzystamy z tych samych mechanizmów, które są odpowiedzialne między innymi za parsowanie pliku konfiguracyjnego php.ini.</p>
<p>Oczywiście najszybsza metoda to pewnie wygenerować czysty kod HTML, zapisać go do pliku a potem zaincludować czy tam pobrać jakąś funkcją (do sprawdzenia, też mi się nie chce <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ). Tylko to jest strasznie niewygodne rozwiązanie bo niewiele z takim cache możesz zrobić, zmienisz coś na stronie i cały cache trzeba generować od nowa.</p>
<p>A tak sobie deserializuję i mam gotową tablicę PHP, którą mogę dowolnie obrabiać.</p>
<p>Wszystko zależy od potrzeb. Na upartego w ogóle można generować całe pliki HTML i przy wyświetleniu strony nawet nie odpalać PHP. Ale ja raczej aż takich kombinacji nie potrzebuję <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Profilowałem nasztomaszow.pl i strona generuje praktycznie żadne obciążenie. Przeważnie wszystko wykonuje się w kilka ms. Dla porównania czysta instalacja Drupal (czyli taka, która właściwie nic nie ma&#8230;) uruchamia się u mnie kilkaset ms. Nie wspomnę co się dzieje przy podobnie do nasztomaszow.pl rozbudowanym serwisie na Drupalu&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: kmg</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2757</link>
		<dc:creator>kmg</dc:creator>
		<pubDate>Wed, 05 Aug 2009 08:20:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2757</guid>
		<description>Moze sie myle, ale Mariusz jest wśród osób z którymi utrzymuje kontakt osobą najbardziej zorientowaną w PHP (nie, niczego nie chce i nie potrzebuje od Ciebie niczego - przynajmniej na razie :P).
 
&quot;BTW moje funkcje do cache pozwalają ustawiać i potem uwzględniać czas ważności cache. Dzięki temu nie muszę używać crona, ustawiam żeby np. główne newsy na stronie głównej miały pół godziny ważności i gdy minie czas ważności i ktoś wejdzie na stronę to cache automatycznie się generuje na nowo. Natomiast gdy pada baza danych to jest polecenie olania znacznika czasu i jest używany stary cache aż do czasu gdy baza znowu zacznie działać.&quot; 
No właśnie - tylko do tego chciałem się odnieść. Oczywiście, rozwiazanie niby ok. Ale czasami z danymi nie trzeba robić nic. Czy nie lepszym rozwiązaniem byłoby:
jeśli(istnieje plik z cache w html)
          zwykle include()
jesli nie
{
          jeśli(istnieje plik z cache)
                   obrabiaj()
         jesli nie
                  wygeneruj()
}

Nie pytam czy to lepsze, podsuwam pomysł Michałowi. Pewnie zależy od obciążenia, przy 50 użytkownikach online niewielkie znaczenie. Przy 5000 w danej chwili - moze juz mieć znaczenie. 

Zadanie dla chętnego: sprawdzić, czy (a raczej o ile - bo to czy tak to pewnie oczywiste) file_exist() zajmie wiecej czasu niż pobranie z pliku zserializowanych danych, deserializacja i sprawdzenie warunku czasowego. Nie chodzi o konkretne wartości, raczej rząd wielkości. Tak, tak - wiem. &quot;Zrób to sam leniu&quot;. Tylko kiedy ;P</description>
		<content:encoded><![CDATA[<p>Moze sie myle, ale Mariusz jest wśród osób z którymi utrzymuje kontakt osobą najbardziej zorientowaną w PHP (nie, niczego nie chce i nie potrzebuje od Ciebie niczego &#8211; przynajmniej na razie <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ).</p>
<p>&#8222;BTW moje funkcje do cache pozwalają ustawiać i potem uwzględniać czas ważności cache. Dzięki temu nie muszę używać crona, ustawiam żeby np. główne newsy na stronie głównej miały pół godziny ważności i gdy minie czas ważności i ktoś wejdzie na stronę to cache automatycznie się generuje na nowo. Natomiast gdy pada baza danych to jest polecenie olania znacznika czasu i jest używany stary cache aż do czasu gdy baza znowu zacznie działać.&#8221;<br />
No właśnie &#8211; tylko do tego chciałem się odnieść. Oczywiście, rozwiazanie niby ok. Ale czasami z danymi nie trzeba robić nic. Czy nie lepszym rozwiązaniem byłoby:<br />
jeśli(istnieje plik z cache w html)<br />
          zwykle include()<br />
jesli nie<br />
{<br />
          jeśli(istnieje plik z cache)<br />
                   obrabiaj()<br />
         jesli nie<br />
                  wygeneruj()<br />
}</p>
<p>Nie pytam czy to lepsze, podsuwam pomysł Michałowi. Pewnie zależy od obciążenia, przy 50 użytkownikach online niewielkie znaczenie. Przy 5000 w danej chwili &#8211; moze juz mieć znaczenie. </p>
<p>Zadanie dla chętnego: sprawdzić, czy (a raczej o ile &#8211; bo to czy tak to pewnie oczywiste) file_exist() zajmie wiecej czasu niż pobranie z pliku zserializowanych danych, deserializacja i sprawdzenie warunku czasowego. Nie chodzi o konkretne wartości, raczej rząd wielkości. Tak, tak &#8211; wiem. &#8222;Zrób to sam leniu&#8221;. Tylko kiedy ;P</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Michał</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2756</link>
		<dc:creator>Michał</dc:creator>
		<pubDate>Tue, 04 Aug 2009 14:29:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2756</guid>
		<description>&quot;Cache nie jest pobierany za pomocą include/require&quot; - dokładnie tak myślałem. Ja pobieram file_get_contents() i dopiero działam dalej. Dzięki za wyczerpujące informacje, których, nie musiałeś podawać, ale z dobrej woli podałeś. Też jestem autorem kilku funkcji &quot;cacheujących&quot; i twoje powyższe informację są mi bardzo pomocne.
PS:
Przepraszam za OT i życzę dalszych sukcesów w NaszTomaszów.pl</description>
		<content:encoded><![CDATA[<p>&#8222;Cache nie jest pobierany za pomocą include/require&#8221; &#8211; dokładnie tak myślałem. Ja pobieram file_get_contents() i dopiero działam dalej. Dzięki za wyczerpujące informacje, których, nie musiałeś podawać, ale z dobrej woli podałeś. Też jestem autorem kilku funkcji &#8222;cacheujących&#8221; i twoje powyższe informację są mi bardzo pomocne.<br />
PS:<br />
Przepraszam za OT i życzę dalszych sukcesów w NaszTomaszów.pl</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: MariuszT</title>
		<link>http://www.tarnaski.eu/blog/wtyczki-do-firefoxa-ktore-musi-posiadac-kazdy-webmaster/comment-page-1/#comment-2755</link>
		<dc:creator>MariuszT</dc:creator>
		<pubDate>Tue, 04 Aug 2009 10:52:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.tarnaski.eu/blog/?p=607#comment-2755</guid>
		<description>Napisałem sobie dwie funkcje do zapisu i odczytu cache. Mogę za ich pomocą zapisać tak naprawdę co mi się podoba ale uznałem, że najrozsądniej będzie gdy będę pobierał dane z bazy, tworzył tablicę, serializował ją i wtedy zapisywał do cache. Potem przy odczycie odserializowuje dane i mam ładną tablicę PHP :) Wszystkie testy wskazują, że takie rozwiązanie jest najszybsze.

Cache jest trzymany w osobnych plikach, odpowiednio posegregowanych w katalogach. Jest tego dużo ale jak się dobrze stworzy strukturę katalogów to nie ma wielkiego bałaganu :)

Ja dodatkowo tworzę na serwerze katalogi, które się nazywają tak jak artykuły. Bo zauważ, że w adresach do artykułów nie jest przekazywany żaden ID określający numer tego artykułu. Gdyby potraktować to standardowo to trzeba robić zapytanie do bazy danych, które najpierw odczyta to ID mając jedynie adres i dopiero wtedy można działać dalej. Ale wtedy gdyby padła baza danych to strona by przestała działać. A tak mam w odpowiednim miejscu stworzoną strukturę katalogów identyczną jak tytuły artykułów i gdy ktoś wchodzi na artykuł to w ogóle nie ma połączenia z bazą danych, jest uruchamiany pliczek w odpowiednim katalogu gdzie jest zapisane ID tego artykułu, potem pobieram cache i gotowe. Bałaganu też nie mam bo ta cała struktura katalogów jest trzymana w odpowiednim katalogu i użytkownik jest tam przekierowywany za pomocą .htaccess. Inaczej musiałbym mieć wiele katalogów w katalogu głównym strony i wtedy faktycznie byłby bajzel.

Brzmi to może trochę skomplikowanie i trochę posiedziałem żeby osiągnąć taki efekt ale gdybyś zobaczył kod i jak to wszystko wygląda od środka to nie byłoby już takie straszne :)

BTW moje funkcje do cache pozwalają ustawiać i potem uwzględniać czas ważności cache. Dzięki temu nie muszę używać crona, ustawiam żeby np. główne newsy na stronie głównej miały pół godziny ważności i gdy minie czas ważności i ktoś wejdzie na stronę to cache automatycznie się generuje na nowo. Natomiast gdy pada baza danych to jest polecenie olania znacznika czasu i jest używany stary cache aż do czasu gdy baza znowu zacznie działać.

I jeszcze jedna sprawa bo to ważne. Cache nie jest pobierany za pomocą include/require. Pobieram zwyczajnie zawartość pliku i odpowiednio obrabiam (chociażby odczytanie i usunięcie z późniejszych wyników znacznika czasu).</description>
		<content:encoded><![CDATA[<p>Napisałem sobie dwie funkcje do zapisu i odczytu cache. Mogę za ich pomocą zapisać tak naprawdę co mi się podoba ale uznałem, że najrozsądniej będzie gdy będę pobierał dane z bazy, tworzył tablicę, serializował ją i wtedy zapisywał do cache. Potem przy odczycie odserializowuje dane i mam ładną tablicę PHP <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Wszystkie testy wskazują, że takie rozwiązanie jest najszybsze.</p>
<p>Cache jest trzymany w osobnych plikach, odpowiednio posegregowanych w katalogach. Jest tego dużo ale jak się dobrze stworzy strukturę katalogów to nie ma wielkiego bałaganu <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ja dodatkowo tworzę na serwerze katalogi, które się nazywają tak jak artykuły. Bo zauważ, że w adresach do artykułów nie jest przekazywany żaden ID określający numer tego artykułu. Gdyby potraktować to standardowo to trzeba robić zapytanie do bazy danych, które najpierw odczyta to ID mając jedynie adres i dopiero wtedy można działać dalej. Ale wtedy gdyby padła baza danych to strona by przestała działać. A tak mam w odpowiednim miejscu stworzoną strukturę katalogów identyczną jak tytuły artykułów i gdy ktoś wchodzi na artykuł to w ogóle nie ma połączenia z bazą danych, jest uruchamiany pliczek w odpowiednim katalogu gdzie jest zapisane ID tego artykułu, potem pobieram cache i gotowe. Bałaganu też nie mam bo ta cała struktura katalogów jest trzymana w odpowiednim katalogu i użytkownik jest tam przekierowywany za pomocą .htaccess. Inaczej musiałbym mieć wiele katalogów w katalogu głównym strony i wtedy faktycznie byłby bajzel.</p>
<p>Brzmi to może trochę skomplikowanie i trochę posiedziałem żeby osiągnąć taki efekt ale gdybyś zobaczył kod i jak to wszystko wygląda od środka to nie byłoby już takie straszne <img src='http://www.tarnaski.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>BTW moje funkcje do cache pozwalają ustawiać i potem uwzględniać czas ważności cache. Dzięki temu nie muszę używać crona, ustawiam żeby np. główne newsy na stronie głównej miały pół godziny ważności i gdy minie czas ważności i ktoś wejdzie na stronę to cache automatycznie się generuje na nowo. Natomiast gdy pada baza danych to jest polecenie olania znacznika czasu i jest używany stary cache aż do czasu gdy baza znowu zacznie działać.</p>
<p>I jeszcze jedna sprawa bo to ważne. Cache nie jest pobierany za pomocą include/require. Pobieram zwyczajnie zawartość pliku i odpowiednio obrabiam (chociażby odczytanie i usunięcie z późniejszych wyników znacznika czasu).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

