Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywac w pliku czy w bazie?
Forum PHP.pl > Forum > PHP
Ruio
Jak myślicie, czy pomysł z zapisem rozbudowanych stron html (treści strony(podstrony dokładniej) wraz z indywidualnymi znacznikami html/js dla danej strony (typu span, p itd)) w bazie danych jest dobrym pomysłem? Może lepiej zapisywać je w pliku tekstowym ?
Zależy mi na możliwości edycji tych danych z poziomu przeglądarki winksmiley.jpg
Co powinno szybciej działać?

Z góry dzięki za pomoc.
Fifi209
Pliki bo to treść dość statyczna - edycja tylko, gdy Ty będziesz miał ochotę.
Z resztą prościej coś "zabrać" z pliku niż z bazy. ;]
Crozin
Baza danych, bo:
1. Pewnie i reszta danych jest w niej trzymana, a wygodniej jest mieć wszystko w jednym miejscu.
2. Łatwiej tym zarządzać.

W plikach też może oczywiście być. Przy takich "wymaganiach" każde rozwiązanie będzie równie dobre co złe.
Ruio
hehe wymagania - ciężko nimi nazwać jedno zdanie winksmiley.jpg chodzi mi o szybkość działania i łatwość użycia. Crozin masz racje, reszta jest w bazie winksmiley.jpg Raczej zrobię to w bazie, tak jak myślałem na początku winksmiley.jpg
kiler129
A ja przerwę drakę i powiem, że i tu i tu smile.gif
W bazie trzyma się całość a cache robi się w plikach. Najlepiej cachować gotową, wygenerowaną podstronę wtedy gdy ktoś ją odwiedzi a cachować stare pliki cache za pomocą crontaba (lecisz co 24h i sprawdzasz których data użycia jest starsza niż np. 10 dni), oraz gdy następuje edycji/kasowanie podstrony.
Fifi209
Cytat(kiler129 @ 20.01.2011, 08:36:47 ) *
A ja przerwę drakę i powiem, że i tu i tu smile.gif
W bazie trzyma się całość a cache robi się w plikach. Najlepiej cachować gotową, wygenerowaną podstronę wtedy gdy ktoś ją odwiedzi a cachować stare pliki cache za pomocą crontaba (lecisz co 24h i sprawdzasz których data użycia jest starsza niż np. 10 dni), oraz gdy następuje edycji/kasowanie podstrony.

Wystarczy nowe cache robić tylko podczas dodania nowych danych/edycji/kasowania, nie trzeba akurat co 10 dni (wiem wiem, przykład).
Zyx
Ja stosuję u siebie często rozwiązanie następujące. W bazie mamy dwa pola, np. content oraz content_html. Przy zapisywaniu dokumentu przechodzi ona przez jakiś parserek, który produkuje ze znaczników kod HTML. Oryginalną treść, która jest potrzebna wyłącznie do celów edycyjnych kompresuję i zapisuję w content, zaś treść w formacie HTML ląduje w content_html. Podczas wyświetlania pobieram jedynie content_html. Jeśli jest potrzeba, nakładam na to dodatkowo jakiś cache, żeby nie trzeba było łączyć się z bazą w celu pobrania treści.
Fifi209
Zyx wydaje mi się, że jednak tracisz miejsce - niby mały problem, bo dziś koszt jednego gigabajta to drobiazg ale... ;p
Crozin
@fifi209: Wiesz, że to się nazywa... cache?
Ruio
Z tego co widzę każdy ma wypracowany sposób jak pracuje mu się najlepiej i wg. niego jest najwydajniej winksmiley.jpg Z cache dobry pomysł, na pewno zrobię tak jak mówicie winksmiley.jpg
Fifi209
Cytat(Crozin @ 20.01.2011, 13:19:35 ) *
@fifi209: Wiesz, że to się nazywa... cache?

Miałem na myśli zapisywanie w bazie dwóch wersji + cache, wystarczy jedna i cache. ;p
Zyx
Cache jest opcjonalny, w dodatku może być robiony w pamięci RAM. Jeśli dokładnie wiemy, kiedy przetworzona zawartość może się zmienić, nie musimy stosować mechanizmów cache z czasem życia, bo po co? Rozwiązanie ma tę zaletę, że dzięki takiemu podziałowi nie trzeba korzystać z cache, co ma duże znaczenie w sytuacji, gdy skorzystać z niego nie można (np. gdy zwracane dane zależą od konkretnego użytkownika, ustawień personalizacyjnych i uwzględnienie każdego możliwego przypadku mogłoby doprowadzić do zapchania serwera).
Crozin
@fifi: O jakich dwóch wersjach i cache Ty piszesz? Przecież ta wersja content_html jest jest właśnie cache. Przecież cache może być trzymany w bazie danych.
Fifi209
Crozin jaki sens ma trzymacie cache w bazie? Chyba chodzi o ograniczenie zapytań do bazy.
vermis
Taki sens, że nie robisz złączeń, nie przetwarzasz danych, nie generujesz html. Tylko pobierasz i ładujesz na stronę.
kiler129
Cytat(fifi209 @ 20.01.2011, 10:02:45 ) *
Wystarczy nowe cache robić tylko podczas dodania nowych danych/edycji/kasowania, nie trzeba akurat co 10 dni (wiem wiem, przykład).


Źle mnie zrozumiałeś smile.gif
Chodziło mi o to, aby coś co piszemy było skalarne - z crona wywalasz pliki cache nieużywane przez dłuższy okres. W małym serwisie gdy artów jest np. 10 nie ma problemy, 100 już gorzek, le jak w serwisie robi się np. 10 artów dziennie (czy też newsów) to zakładając, że 1 art = 1 plik cache to przez rok masz ponad 3600 plików jednego typu smile.gif
A po co trzymać cache czegoś czego nikt dawno nie odwiedza po za google za ruski rok?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.