Персонализированный контент
05.12.2009Одно из наследий wordpress - это персонализированный контент. Пример: задержанные комментарии и заполненная форма комментирования. С одной стороны это удобно для посетителей - не нужно каждый раз заполнять форму. Недостаток - такие решения потребляют ресурсы: каждый раз исполняется php код для определения, поиска и вывода персональной инфы. Я так думаю, что при небольшом количестве посетителей, например большинство посетителей это комментаторы, будет все нормально. А что если большой поток посторонних? В том смысле, что не комментаторы? Это будет означать пустую нагрузку. Каким же образом можно оставить персонализированный контент и избавить сервер от пустой нагрузки? На ум приходит пока три решения.
- Оставить как сейчас - одна страница разруливает всех посетителей.
- Сделать персонализацию на аяксе. Отдается всем одинаковая страница, потом жава запускается на странице и если установлена кука, то дергается сервер для получения персональных данных, которые потом через жаву показываются, а именно заполняется форма и показываются неодобренные комменты. недостаток - два запроса на страницу, и вероятно при большом количестве комментаторов и малом числе посторонних только увеличит нагрузку.
- Делать два варианта страницы - один для всех, и другой как в 1 варианте. Для этого придется придумать алгоритм разруливания запроса - еще до проверки кеша решить какая страница требуется, и исходя из этого дергать контент. Недостаток - придется неизвестным пока образом разруливать генерацию контента. Сейчас генерируется одна страница, с php вставками внутри, которые разруливают посетителей.
Вполне вероятно, что мои рассуждения не имеют почвы под собой, так как подавляющее большинство не озабочено проблемами высокой нагрузки на сервер, а когда такое возникает, то решают приобретением нового сервера/переходом на другой тариф у хостера. И в самом деле - оригинальный wordpress даже не имеет кеша., а я тут думаю про миллисекунды...
С другой стороны думаю - на кой черт сателлиту персонализация? Для формы комментов достаточно имени и контента и ни каких там кук. Сделать лайт режим для комментирования безо всякой персонализации.
С другой стороны, если рассуждать о персонализации, то в идеальном варианте вообще надо позволить посетителю самостоятельно строить верстку - чтобы он для себя сам устанавливал/редактировал интересные ему виджеты, вид меню, тему. А если еще дальше, то нужен агент не в виде обычного браузера, а особого приложения. Ну вот представьте себе десктоп программу, меню которой - это меню сайта, тулбары -это тулбары для навигации по сайту, а не тулбары самого браузера. Как вариант - аля chm с деревом постов, рубрик, архи. Да много можно придумать наворотов. В абстрактном будущем, я бы даже может и занялся подобным проектом - придумать спецификацию для xml данных, которые бы дергало приложение, события, и так далее. НО в подобном проекте я не вижу денег, а посему это останется на уровне рассуждений...
← Ранее Изолированные комментарии
Позже Адреса для страниц →
Комментарии (30) на запись “Персонализированный контент”
Оставить комментарий
Просто мысли - после выхода новой версии возможно оформлю в плагин/модуль - как там это будет называться.
Реально это конечно нужно только для ну очень сильно нагруженных сайтов - кто-то типа газеты сделает - с учетом скорости самого блоголета.
По поводу времени жизни - требуется конечно серверный крон. С другой стороны, он есть на многих площадках и по 5 баксов в месяц, а проект с большой посещаемостью наверное найдет себе средства на пристойный хостинг.
По простыням линков - все гораздо проще. Примерно такая мысль (далее чуть переделанный копипаст):
We only redirect GET requests
RewriteCond %{REQUEST_METHOD} GET
We only redirect URI's without query strings
RewriteCond %{QUERY_STRING} ^$
We only redirect if a cache file actually exists
Вот и ключевой момент.
RewriteCond %{DOCUMENT_ROOT}/cache_dir/%{HTTP_HOST}/%{REQUEST_URI}index.html -f
RewriteRule .* cache_dir/%{HTTP_HOST}/%{REQUEST_URI} [L]
Естественно еще добавляются проверки для rss, css, медиафайлов. Можно добавить обработку gzip. Ну и если файла нет в кеше - стандартно отдаем управление index.php
Владимир, а планируется ли экспорт данных из Блоголёта в XML-формат? А то есть замечательная программа Зеброид, которая позволяет автоматически расставлять метки, рубрики, перелинковку и прочее. Она как раз поддерживает работу с Блоголётом, но именно XML-RPC, загружая данные с компьютера на блог. А обратно не получается.
Например, у меня есть несколько блогов на старой версии движка. Там не работает отложенный постинг и ещё есть ошибки, которые уже устранены в свежей версии. Но перейти на неё не могу. Тут же вылезают ошибки при попытке автоматически обновиться. А так можно было сделать следующее: экспорт данных блогв в XML, загрузка их в программу Зеброид, далее отправка материала уже на новую версию движка.
Philipp, а эта настройка действует на все записи или только на свежие? Просто у меня по умолчанию создаётся RSS, равное анонсу. А как сделать так, чтобы все записи (и старые, и новые) публиковались в RSS полностью?
Тогда можно было бы применить плагин «Простой импортёр RSS». Верно?
Полного рсс я пока не делал, но думаю возможно, правда для постов надо будет еще добавитьстатус опубликован/черновик, и будут потеряны флажки "комментирование открыто" и дак далее.
С экспортом - для каждой версии придется тогда делать свой.
Блоголётчик, конечно, если и делать экспорт, то только простой (статьи, страницы, рубрики, метки), то есть чтобы в одном файле была вся контентная составляющая.
Philipp, в версии 2.80 нашёл только «Простой импортёр RSS». А вот «Плагин полный RSS» нет. Это в какой версии? Впрочем, если загружать даже последние 10 записей из RSS-ленты или же всю целиком, то почему-то переносятся только записи, но нет меток и рубрик.
Что касается ZoundryRaven, то тут возникли сложности. Выбираю Download Recent Posts, долго грузится Running 0-5-10-26%, а далее выскакивает ошибка Error executing task ‘Download Documents’
В расшифровке указано:
None: {None}
Caused By:
exceptions.AttributeError: {'NoneType' object has no attribute 'setTagspaceUrl'}
at zoundry\blogpub\xmlrpc\xmlrpcserverimpl.pyo:1199 [_createEntryFromRpcResult()] -> None
at zoundry\blogpub\xmlrpc\xmlrpcserverimpl.pyo:1263 [_createEntryFromRpcResult()] -> None
at zoundry\blogpub\xmlrpc\xmlrpcserverimpl.pyo:986 [getRecentPosts()] -> None
at zoundry\blogapp\services\pubsystems\blog\xmlrpc.pyo:23 [_listEntries()] -> None
at zoundry\blogapp\services\pubsystems\blog\blogpublisher.pyo:528 [listEntries()] -> None
at zoundry\blogapp\services\pubsystems\blog\blogcommands.pyo:397 [downloadEntriesForBlog()] -> None
at zoundry\blogapp\services\pubsystems\blog\blogcommands.pyo:421 [downloadEntriesForBlog()] -> None
at zoundry\blogapp\services\pubsystems\blog\blogcommands.pyo:393 [doCommand()] -> None
at zoundry\blogapp\ui\util\publisherutil.pyo:408 [downloadPosts()] -> None
at zoundry\blogapp\ui\util\publisherutil.pyo:620 [_downloadPosts()] -> None
at zoundry\blogapp\ui\util\publisherutil.pyo:598 [_run()] -> None
at zoundry\appframework\services\backgroundtask\backgroundtaskimpl.pyo:265 [run()] -> None
Thread: [bgtask:id:000001256f41968400c000a8000100021a7fc426]
К сожалению, не эксперт по Питону... Можно попробовать поиграться с типом XML-RPC. У меня оптимально работал с типом Wordpress.
А плагин у меня идет в списке плагинов сразу после резервной копии на емейл. Какую версию изначально ставил - даже не помню, что-то из СВН за сентябрь или октябрь, потом спокойно обновился до текущей.
вообщем распаковал архив, на хост, выставил все нужные права, запускаю сайт, но вылазит оштбка
Error write file to the /home/hlpzo571/domains/site.ru/public_html/plugins/ folder. Please change permisions to 0777
повторю - права все выставлены. И это уже 2 хостинг где така ошибка.
Почему такое происходит? как исправить?
спасибо
Ясно, матчасть знаете плохо :) Все это делается следующим образом: установить шаблон для рсс в админке настройки RSS
$post->rawcontent
и соответствено установить количество постов - настройка/просмотр
А что делать, если версия Блоголёта старая (Версия: 2.11-2.48), там нет такой опции в настройке RSS и нет возможности обновиться до последней (постоянно выскакивают ошибки)?
Что касается версии 2.80, то там такая штука работает. Только вот не импортируются рубрики и метки, только текст.
Да, с php не дружу. Сейчас переношу на 2.80 старый блог через Зеброид. Программа расставляет даты для отложенного постинга. Очень удобно для сателлитов, которые пытаются обмануть Яндекс, выдавая себя за постоянно обновляющиеся блоги.
Правда, тут два условия:
1. Отложенный постинг должен работать без сбоев;
2. После каждой публикации желательно делать автоматический пинг Яндекс.блоги, чтобы прикормить быстробота.
Поэтому и интересовался относительно работоспособности крона и пинговки.