LINUX.ORG.RU

Частично динамичный контент


0

1

Долго медитировал на сайт, думал что и как сделать. Решил остановится на статике, а php будет только генерировать странички, и по сути вообще не важно тогда на чем сайт делать (хоть на /bin/sh, главное суметь выбрать данные из базы). С php скриптами никто кроме одного человека (меня) для генерации контента общаться не будет, и с базой тоже - поэтому пускай хранится в файлах или sqlite. Все. Выдержит любой хайлоад, я доволен. Можно пойти дальше и написать свой сервер, который кроме отдачи статики с HTTP/1.1 200 OK ничего не умеет, но пока не нужно..

Проблема в том, что имеется блок с информацией о пользователе, который на сайте залогинен. Он конечно же должен изменяться для каждого посетителя отдельно, вплоть до вывода текущего IP адреса пользователя. Как его реализовать внутри статичного контента?

Первая мысль ajax, но у Ъ может быть отключен javascript.
Вторая мысль - делать не всю страницу сайта статичной, а только кэшировать ее основной контент, а такое как 'header', 'footer' и блоки сайта остаются php скриптом, но это существенно понижает производительность и сводит всю затею с хайлоадом к нулю, если в итоге все-равно каждый раз запрашивается .php файл.
Третья мысль, для каждой отдельной сессии (пользователя) генерировать свою статику, и при повторном запросе уже выдавать ее, но боюсь не напасусь места на винте и вообще, кажется на грани бреда.

Что вы могли бы посоветовать лучше?

★★★★★

это называется преждевременная оптимизация

redixin ★★★★
()
Ответ на: комментарий от xtraeft

ему хватит этого

чего хватит? самотыка? тебе хватает?

anonymous
()
Ответ на: комментарий от zabivator

Да на любых...

sqlite спонсируется DARPA, и основной критерий оптимизации - нижний отжор батарейки. мне очень интересно, на каких таких операциях sqlite быстрее.

Не это основное в SQLite. Как разработчику MySQL Вам наверное должно быть известно о Berkeley DB (ага, то что в MySQL BDB). Так вот. SQLite это просто надстройка над Berkeley DB, которая обеспечивает исполнение SQL-запросов к этой базе. Не более.

И вполне можно убрать прослойку из SQL и использовать native API для Berkeley DB. Причём, самое главное — можно создавать in-memory databases. Например вот — http://docs.oracle.com/cd/E17076_02/html/articles/inmemory/C/index.html

А можно создавать «нормальные» приложения, использующие все пироги и плюшки, в частности поддержку транзакций. Например вот — http://www.mathematik.uni-ulm.de/help/BerkeleyDB/ref/transapp/transapp.cs

Оба примера на С, без SQL.

Как разработчик MySQL

Мои соболезнования.

mr_noone
()
Ответ на: комментарий от xpahos

PostgreSQL...

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

Вас спасёт. Вполне работоспособная БД. Можно без проблем хоть свои типы данных добавить (при решении ряда задач это весьма и весьма удобная фича). Ну и так... Всего не обскажешь, но лично я доволен как слон. И, самое смешное, что сравнивать можно Oracle и Postgre. Но вот сравнивать MySQL и Oracle (я имею ввиду СУБД) это смешно.

mr_noone
()
Ответ на: PostgreSQL... от mr_noone

Вас спасёт. Вполне работоспособная БД. Можно без проблем хоть свои типы данных добавить (при решении ряда задач это весьма и весьма удобная фича). Ну и так... Всего не обскажешь, но лично я доволен как слон. И, самое смешное, что сравнивать можно Oracle и Postgre. Но вот сравнивать MySQL и Oracle (я имею ввиду СУБД) это смешно.

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

xpahos ★★★★★
()
Ответ на: комментарий от Eddy_Em

Но, все-таки, я не представляю, как без JS выполнить перенаправление на https с обратным возвратом на нешифрованную страницу для авторизации.

А в чем проблема?

maxcom ★★★★★
()
Ответ на: комментарий от xpahos

Ну, не знаю... :)

Я помянул про Oracle разве что в контексте сравнения СУБД по функциональным возможностям. Но, если честно, то даже если бы мне выдали Oracle, переписали бы за меня... То в любом случае как только появилась бы возможность, снёс его и вернул Слона на место. Уж больно комфортна (на мой, личный взгляд) эта СУБД. Хотя, в принципе, разница между слоном и оракулом не столь фатальна, но всё-таки слон уже привычнее. Это субъективно, я понимаю, но всё-таки... :)

mr_noone
()
Ответ на: комментарий от vertexua

А... Узнаю... :)

Это так называемый RBC-подход. Программисты из RBC (по крайней мере некоторые из них, которых я знаю лично) свято уверены в том, что странички надо всенепременно генерировать на сервере (в качестве подкола я им ещё рекомендую всегда не только генерировать странички на сервере, но и рендерить их там же. Ну а чего? Чтоб два раза не ходить... :))) ). Что JavaScript — зло, что XML это «не для человеков»... Ну и тому подобные еретические утверждения.

mr_noone
()
Ответ на: Ну, не знаю... :) от mr_noone

на своих проектах, которые не относятся к основной работе PgSQL. Я думал там хэши использовать, но пока вот только на массивах остановился. Есть поле, которое может хранить несколько значений, но индексировать его не нужно. MySQL с таким не справляется. Сейчас бывает максимум пара тысяч человек на сайтике одновременно, поэтому оно даже без кэша нормально работает. А потом уже буду думать насчет всяких балансеров и прочего.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Не.

В принципе, Berkeley DB справится, плюс оно даст возможность быстрого поиска. Про скорость чтения/записи можно и не говорить... Она недосягаема для существующих СУБД. С полнотекстовым поиском (если такое понадобится) справится Postgre, но Вам этого пока и не нужно.

У Berkeley DB есть четыре метода доступа — http://docs.oracle.com/cd/E17076_02/html/gsg/C/accessmethods.html, Вам лучше выбрать под свою задачу нужный. В «букваре» это подробно расписано. Но по словосочетанию «хэши использовать» я бы сразу глянул на Hash. А так... В принципе, там есть что и из чего выбрать.

А потом уже буду думать насчет всяких балансеров и прочего.

Возможно, я буду «оригинален», но я бы посмотрел в сторону FastCGI на С или С++. Смотря что Вам удобнее. FastCGI это библиотека для создания «persistent web-applications». У неё есть ряд очень удобных возможностей. Во-первых, она позволяет написать «cgi» и открыть например соединение с БД (операция в случае использования пары login/password затратная по времени), а потом принимать и обрабатывать от пользователей сообщения в большом цикле вида:

while (FCGI_Accept() >= 0) {

# body of response loop

}

Взято из http://www.fastcgi.com/devkit/doc/fastcgi-prog-guide/ch2c.htm#5847

Как Вы понимаете, оно будет работать до тех пор, пока не вырубят свет на сервере. :) Или по другой причине сервер не зашотдаунят.

Во-вторых, в отличие от стандартных CGI, приложение с FastCGI использует не три потока (stdin, stdout, stderr), а... socket. Таким образом, я могу запустить данное приложение на хосте, где Apache не было, нет и не будет. А с произвольного числа веб-серверов обращаться к данному хосту. А могу и на том же хосте, где Apache запустить. Как настраивается в «подробностях и с картинками» — http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

Справедливости ради надо заметить что FastCGI и похапе (говорят) поддерживает, но что там и как, не знаю. На С вот всё больше пользуюсь. Зело доволен. :)

mr_noone
()
Ответ на: Не. от mr_noone

К чему все это? Что такое FCGI я знаю и знаю насколько сложно разрабатывать на C что-то подобное Pyramid для Python.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Ну я так...

просто предложил. :) Мне отсюда не виден уровень Ваших знаний, уж простите. :) Авось кому ещё сгодится/не сгодится. :)

mr_noone
()
Ответ на: комментарий от xpahos

hstore чтоли? мы его юзаем и я его ненавижу, потому что у меня все тесты прогоняются в in-memory sqlite, которая ломается на синтаксисе hstor'а =)

pechorin
()

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

pechorin
()
Ответ на: комментарий от pechorin

да, я тут даж про него спрашивал. Я тут не так давно обновил до 9 ветки PgSQL, поэтому hstore как-то сам собой отпал. Да и в целом он не особо мне и нужен был.

xpahos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.