Кеширование в блоголёте
16.10.2009Блоголёт имеет многоуровневую систему кэширования. Самый верхний уровень - это вся страница целиком, которая сохраняется в кеше. По умолчанию, если отсутствуют события, то страница в кеше объявляется недостоверной через час, хотя на самом деле она и не устарела. Кеш полностью очищается при создании/редактировании/удалении любого поста, а также при некоторых других событиях. Также страница обновляется после добавления комментария.
Следующий уровень кеша - это виджеты и меню, и список архивов в секции head. Время жизни этого кеша неограниченно и очищается только, когда очищается весь кеш, то есть например при манипуляции постами.
Есть еще псевдокеш у самих классов, ну это можно скорее назвать оптимизацией, когда часто используемые данные подготавливаются единоразово для ускоренной обработки. Пример такого - архив, который хранит весь список архивных ссылок, а перегенерация ссылок происходит только при манипуляциях с постами. Еще пример - тема в блоголёте, в частности шаблон комментариев хранится во внутренних данных и обновляется при смене шаблона. Планируется расширить кеширование темы в новой версии блоголета.
Также задумался над следующим: можно ведь кэшировать и контент поста. Например сейчас после добавления комментария контент поста, точнее не сам контент а конечный html заново генерируется, хотя в нем никаких изменений не произошло, ровно как ничего не поменялось в постскриптуме - ну там, где ссылки на похожие записи и прочее. Эту часть контента думаю можно и нужно кэшировать. Предположительно, это значительно снизит потребление памяти и ускорит отдачу страницы целиком. С другой стороны можно пойти и другим путем: вообще не объявлять страницу поста устаревшей, а лишь делать php вставку комментариев - тогда вся страница, включая контент поста и виджеты не будут вставляться, а будет вставляться только кеш комментов. Вероятно это окажется даже выгоднее, но конечно, под вопросом.
То есть хочу сказать, что есть еще пространство для роста производительности блоголёта, и не все возможности еще реализованы.
Один комментарий на запись “Кеширование в блоголёте”
Оставить комментарий
При попытке установить самую свежую версию Блоголёта с нуля возникают ошибки.
Сначала всё нормально. Ввожу мыло, название и описание блог. Когда нажимаю «Создать блог», выскакивает: Parse error: syntax error, unexpected ';' in \lib\install\eventclass.install.php on line 7
Если в обозначенном файле удалить указанный знак, то появляется следующее:
Caught exception: The requested property name not found in class TOptions
0 lib\kernel.php(31): TDataClass->Error('The requested p...')
1 lib\kernel.php(254): TDataClass->__get('name')
2 lib\templateclass.php(482): TEventClass->__get('name')
3 lib\templateclass.php(46): TTemplate->Gettitle()
4 lib\templateclass.php(451) : eval()'d code(5): TTemplate->__get('title')
5 lib\templateclass.php(451): eval()
6 lib\templateclass.php(416): TTemplate->ParseFile('index.tml')
7 lib\kernel.php(900): TTemplate->request(Object(TNotFound404))
8 lib\kernel.php(757): TUrlmap->NotFound404()
9 lib\kernel.php(734): TUrlmap->DoRequest('/')
10 index.php(35): TUrlmap->Request('www.truthforex....', '/')
11 {main} url/style.css\" type=\"text/css\" media=\"screen\" /> url/print.css\" type=\"text/css\" media=\"print\" /> name RSS Feed\" href=\"$Options->url/rss/\" /> url/rpc.xml\" /> url/rsd.xml\" /> url/wlwmanifest.xml\" /> url/foaf.xml\" /> files/favicon.ico\" /> version\" /> keywords\" /> description\" /> url/sitemap/\" /> url/openid/\" /> url/openid/\" /> url/openid/\" /> url/openid/\" /> $Template->archives $Template->head
url$Options->home\">$Options->name
$Options->description
• url$Options->home\" title=\"$lang->home\">$lang->home
• url/pda$Options->home\" title=\"$lang->mobile\">$lang->mobile
$Template->menu
$Template->content
url/rss/\"> url/images/rss-icon.png\" alt=\"$lang->subscriberss\" border=\"0\" />
$Template->sitebar
________________________________________
$Template->sitebar2
________________________________________
$Template->footer
url$Options->home\">$Options->name
И больше ничего.