Кеширование сайта (PHP+Postgres)

Грин

Новичок
Кеширование сайта (PHP+Postgres)

Здравствуйте, уважаемые сторожилы.
Есть сайт, с посещаемостью 5000 человек в день, относителльно немного!
Его редактируют, примерно 20 человек.

Движок сделан на системе UnifiedDB, врядли кто-то сталкивался, но суть в том, что еть таблица переменный, есть таблица связей, есть типов, есть категории, все это связывается в один сумбур при выводе, т.е. кому интересно вьюшка новостей выглядит так (урезаю некоторые части повторяющиеся):
PHP:
 SELECT i.id, i.name, ( SELECT v.bvalue
           FROM "values" v
          WHERE v.did = 22 AND v.id1type = 1 AND v.id1 = i.id) AS publish, ( SELECT v.ivalue
           FROM "values" v
          WHERE v.did = 20 AND v.id1type = 1 AND v.id1 = i.id) AS language_id,  ( SELECT v.vcvalue
           FROM "values" v
          WHERE v.did = 31 AND v.id1type = 1 AND v.id1 = i.id) AS news_type_name, ( SELECT v.vcvalue
           FROM "values" v
          WHERE v.did = 35 AND v.id1type = 1 AND v.id1 = i.id) AS bannerurl
   FROM items i, links l
  WHERE i.id = l.id1 AND l.id1type = 1 AND l.id2 = 430 AND l.id2type = 2 AND i."type" = 48;
соответственно, это не навигация а набор простых сущьностей, в запросе к навигации, а она иерархическая все посложнее.

Так вот, сервачек наш захлебывается. Первое, что я сделал, это эти вьюшки заменил таблицами, т.е. поле изменения инфы идет CREATE TABLE FROM вьюшка. ЭТо тоже оказывается тормозит рабту, т.к. новостей много и вего остального. Плюс 20 пользователей одновремнно редактирую, не забываем.

Собственно вопрос, нужно кешировать сайт, не забывая, что его изменяют в любой момент. Что на каждой странице свои элементы меню.

Про кеширование в посгресте запросов я к сожалению не знаю, т.е. у нас есть сисадмин, который сказал, что что-то в посгресте с этим не то. если у кого есть интересные материалы по поводу кеширования в посгресте запросов, буду очень благодарен.
 

Грин

Новичок
меня интересует вариант полного кеша в html файлы, если кто-то параллельно про постгресс скажет, будт хорошо

-~{}~ 08.06.06 11:21:

наверняка же кто-то сталкивался с такими ситуациями
 

slach

Новичок
а в чем проблема то??
через Output buffering загоняешь весь HTML или по частям в файлы

классов для файлов кеширования просто ВАГОН сейчас

но рекомендую
http://php.net/en/ref.apc.php
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Грин
Движок сделан на системе UnifiedDB, врядли кто-то сталкивался, но суть в том, что еть таблица переменный, есть таблица связей, есть типов, есть категории, все это связывается в один сумбур при выводе, т.е. кому интересно вьюшка новостей выглядит так (урезаю некоторые части повторяющиеся):
Код:
 SELECT i.id, i.name, ( SELECT v.bvalue
           FROM "values" v
          WHERE v.did = 22 AND v.id1type = 1 AND v.id1 = i.id) AS publish, ( SELECT v.ivalue
           FROM "values" v
          WHERE v.did = 20 AND v.id1type = 1 AND v.id1 = i.id) AS language_id,  ( SELECT v.vcvalue
           FROM "values" v
          WHERE v.did = 31 AND v.id1type = 1 AND v.id1 = i.id) AS news_type_name, ( SELECT v.vcvalue
           FROM "values" v
          WHERE v.did = 35 AND v.id1type = 1 AND v.id1 = i.id) AS bannerurl
   FROM items i, links l
  WHERE i.id = l.id1 AND l.id1type = 1 AND l.id2 = 430 AND l.id2type = 2 AND i."type" = 48;
Открою страшную тайну: аналог хитровые...нной "системы UnifiedDB" в Postgres'е уже есть и называется системными таблицами. Вы повесили абсолютно ненужный второй слой, реализованный наверняка гораздо кривее, чем потрошки Postgres'а. У вас что, структура новости меняется по 5 раз на дню, что понадобилась такая архитектура?

Не тормозить это ублюдство не может по определению.

Кэширование здесь можно добавить, но это будет лечение симптомов, а не болезни.
 

Грин

Новичок
Да если бы я это делал:)))
Делали давно, не планировали таких нагрузок, теперь я должен с этим борться...

а как проверять, произошли изменения или нет? делать флаг в виде таймштампа?

-~{}~ 09.06.06 10:32:

для кеширования.
т.е. делаю запрос, если не было изменений, беру контент, если были с момента создания файла, беру из базы и обновляю контент.
а как с меню быть?
 
Сверху