0
Другие записи за это число:
2009/12/13_test1 - Ищо из книжки
<< предыдущая заметкаследующая заметка >>
13 декабря 2009
про Openid-клиента, Openid-провайдера и стратегии кэширования

1. Нашел интересную процедуру openid-авторизации — старая глючила с некоторыми вордпрессами. Потестируйте, если есть openid, а особенно если Вордпресс: http://lleo.aha.ru/blog/openid/ Оно пока ничего не регистрирует, только выдает вам ответ сервера. То есть, что вы там тестировали, я не узнаю, так что отпишите в комментах пожалуйста.

2. Посоветуйте движок openid-провайдера на PHP. У меня для этого есть phpMyID. Он работает, но мне не нравится, потому что не авторизует мой сайт через Нокию E90 — она пишет «Защищенное подключение недоступно -26037«. Хотя нормальные браузеры на нормальном компе авторизуются отлично. Я бы поверил, что беда именно с Нокией и успокоился, но ведь по openid из ЖЖ она меня прекрасно авторизует. Кто ничего не понял из сказанного, повторю: речь не про авторизацию посетителей (о них речь была в пункте 1), а об openid-ПРОВАЙДЕРЕ — системе, позволяющей владельцу дневника подписываться своим дневником на других сайтах. И не надо мне рассказывать про радости чужого delegate, потому что это не решение, а заплатка. Например, если движок станет поддерживать многопользовательский режим как блогохостинг (а почему бы нет со временем?), то вы тоже будете всех юзеров гонять регистрироваться на myopenid.com и писать инструкции, как им прописать это у себя в темплейте? Не выход.

3. И последний вопрос. Мне как-то надо для себя понять с кэшированием. Что именно имеет смысл кэшировать, а где эта работа бессмысленна.

1. Как поступает MySQL с повторяющимися запросами?

2. Как ускорить выборку данных?

3. Что делать тем, у которого нет memcache?


<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Opera
1
1
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Проверил свой сайтец (phpMyID) и блог на вордпрессе (плагин [url=http://wordpress.org/extend/plugins/openid/]OpenID[/url])
С сайтом все нормально, а через блог авторизоваться не получилось. С виду все нормально - прохожу к себе в блог, жму кнопку "разрешить", возвращаюсь на http://lleo.aha.ru/blog/openid/ и там мне говорят: "Либо цифровая подпись протухла, либо http://ляляля/ ? это не Ваш урл.".

Может это из-за самоподписанного ssl-сертификата?
В ЖЖ логинится нормально, сертификат у крутой конторы ради проверки покупать не буду. %)


Ну, а движок openid-провайдера гляньте в вордпрессовском плагине.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
1
1
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
UPS: А попробуйте вот эту еще: http://lleo.aha.ru/blog/openid2/

Я вообще не очень понимаю, что такое ssl и зачем он вообще при openid. Например, у меня на сайте нет никакого ssl, я и знать про него не знаю, а phpMyID вполне работает.

Что касается Вордпресса - смеетесь что ли? Движок openid в Вордпрессе - это 40 файлов в 4 папках общим весом под полмегабайта. У меня весь блог втрое меньше, чем каждый плагин Вордпресса. За что я его и не люблю.
Windows IE
1
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
По поводу (3) самая правильная стратегия сначала все запустить как можно проще но чтобы работало без кеширования (которое неизбежно усложняет систему), посмотреть где возникнут bottlenecks, и потом там уже патчить и делать кеширование. Потому как заранее все равно фиг угадаеш.

-Maxim
Windows Firefox
2
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Чтобы правильно задать вопрос, нужно знать больше половины ответа :)

Чтоб ускорить работу mysql и выборку данных в случае конкретно этого проекта -- более чем достаточно просто грамотно завести структуру базы данных ( индексы/типы полей) и грамотно писать запросы, с пониманием внутренней работы mysql.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Что подразумевается под "этим проектом"? Этот проект способен собирать до 500 посетителей в минуту - бывало такое у меня в дневнике. И должен быть готов к любым нагрузкам.
Mac Safari
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Johny правильно говорит. Ну и про explain не забываем ;)
Linux Safari Chrome
3
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
сделай, наконец, возможность просмотреть результаты голосования без голосования - я не знаю ответа на вопрос, и он сам меня интересует!!!
Linux Safari Chrome
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
ssl - шифрование соединения.
Windows Opera
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> Я вообще не очень понимаю, что такое ssl и зачем он вообще при openid.
У меня в бложике админку редиректит автоматом на https://, видимо, openid при доступном хттпс-соединении тоже страается его юзать, а т.к. сертификат самосозданный, то и получилась такая фигня.

> А попробуйте вот эту еще: http://lleo.aha.ru/blog/openid2/
Ага, тут все работает.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
(недоверчиво) Точно работает? Значит, придется опять его припиливать, этот openid-class... Там есть некоторая глюка, не предусмотренная разработчиками: проверить-то openid можно запросто, но вот только когда ты вернулся на страницу проверенный, нельзя узнать, ЧТО ИМЕННО (какой openid-адрес) ты проверял, потому что именно эту переменную процедура не сохраняет почему-то. А попытки самостоятельно припилить ее к параметрам возврата у меня в дневнике оказались неудачными: часто приводили к глюкам с Вордпрессом и т.п.
Windows Opera
2
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
У MySQL есть опция управления кеширование у SELECT. Примеры из руководства:

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ага...
Linux Ubuntu Firefox
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Как ускорить выборку данных - вот для mysql советы хорошие
http://highload.ru/papers2009/12506.html
Сам mysql этим занимается, но плохонько

абстрактный совет - тюнить то, что тормозит, а для этого, мерить что именно тормозит (может, php или веб сервер, например)

конкретный совет - я бы в случае такого блога кроме оптимизации БД в первую очередь кешировал бы результат-html на front end (nginx?), печатая всю зависящую от конкретного пользователя динамику ("залогиниться") из javascript
Тогда если 500 человек в минуту полезут на одну страницу, им отдастся одно и то же максимально быстро. А memcached тогда негде вставлять
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
К сожалению (то есть, к счастью), движок блога по своей идеологии предполагает очень плотную личностную работу с посетителем. Как минимум, это: личные приветствия, показ собственных, но нераскрытых комментариев, система подзамков, допуск к голосованиям за комментарии, ответы и формы голосования и т.п. В дальнейшем планируется (и в прошлом было ;) система обмена личными сообщениями, мониторинги и т.п. Все это никак не вписывается в идеологию статично-сформированной страницы, которая отдается каждому. И очень тяжело реализуется средствами javascript (да и затраты при этом могут оказаться гораздо выше).
Linux Ubuntu Firefox
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
если есть вообще что-то статическое - в блоге это пост и дизайн, как минимум, то есть смысл закешировать это как можно ближе к клиенту (и сэкономить как можно больше)

memcached незакеширует операцию по дерганию этого memcached и расходов будет больше (надо , конечно, думать сильно ли это влияет)

(Если ,там, 100 разных пользователей в минуту, то все, что не менялось за минуту уже попадает под определение "статического")
Если "статику" отдать как HTML c соответствующими заголовками, то он закешируется на frontend (если он есть), в браузере, в прокси(если он есть).

Программировать, конечно, сложнее, но можно одни раз написать js, подклеивающий динамику к статике, и потом генерить отдельно статический и динамический html (ну или сразу динамический js файл)
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А дизайн-то что кэшировать? Он в файле лежит:
http://lleo.aha.ru/blog/design/dnevnik.html
Если не ошибаюсь, открываемые файлы php/apache кэширует сам?

Мне кажется, правильной стратегией будет такая: кэшировать в memcache надолго (а если нет memcache - в файлах специальной папки) serialize-дамп для штук, требующих многократной выборки из базы, их я вижу такими:
1) Квадратик календаря за каждый месяц (сбрасывать, после каждого админского редактирования).
2) Простыню всех комментариев к заметке, включая скрытые (сбрасывать: после добавления комментария к этой заметке; при операциях админа; при голосовании плюсиками-минусиками за какой-то комментарий)
3) Дата последней заметки (нужна при запросе корня /blog/, сейчас она вычисляется через LIKE %, это оправданно, потому что не часто, но все-таки), сбрасывать при изменении от админа.
4) Да и пожалуй все. Содержание? Поиск по заметкам? Это все крайне эпизодически, основная нагрузка - именно открытие заметки с комментариями.
Linux Ubuntu Firefox
1
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
дизайн - я имел ввиду не связанное с контентом содержание страницы

Статические файлы апач отдает, скорее всего, правильно

про php могу и ошибаться, кажется надо ставить eaccelerator чтобы при каждом запросе файлы не компилились заново

вопрос вот в чем, 1-2 надо рендерить из объектов в html - ты хочешь это делать на каждый запрос? Так может закешировать сразу результирующий html?

(а если кешировать куски html - почему бы не склеить из в один и закешировать их и на клиенте :) ?)

3 я бы хранил отдельно в базе и менял при добавлении заметок, да и так вместо LIKE лучше, наверное, ORDER BY date desc LIMIT 1.1 (если индекс есть)

В зависимости от нагрузки есть смысл кешировать и сам текст заметки, особенно если ты ее форматируешь после вытаскивания (вытаскивание по ID по идее быстро, хотя 500 человек создадут кучу соединений в БД и лучше бы этих запросов тоже избежать )
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Да, простынку комментов и календарь конечно надо хранить уже в максимально собранном виде. Календарь - просто готовым текстом, простынку - массивом, позволяющим быстро убрать комментарии, которые не показываются конкретному лицу. Я же про serialize написал.

Вместо LIKE не получится ORDER - в той же базе лежат и заметки, не играющие в календарь. Да и не надо так люто бояться LIKE - это должно происходит один раз, когда админ редактирует заметку: определить, какая заметка теперь последняя, как изменились смежные ссылки, ну и при построении календаря тоже LIKE.
Linux Ubuntu Firefox
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Просто ничего страшнее LIKE в бд быть не может :)
В описанном случае все равно можно переделать под операции с индексами (даже не знаю тип поля date - но это так или иначе решается).
Но если это редкая операция, то чтение она (вроде) не блокирует, поэтому мешать не будет
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Хорошо, давайте прикинем. Этот "страшный" LIKE (который, к слову, используется заодно в сервисе поиска по сайту) в описанной системе выполняется, когда админ ИЗМЕНЯЕТ ЧИСЛО ЗАПИСЕЙ. Сколько раз в сутки админ это делает? Один? Два? Десять? Для такого частого постинга и движок-то не расчитан, надо делать немного другой дизайн и режим вывода - ленту. Ну пусть десять. Вам жалко десять раз в сутки сделать LIKE? Да одни только посетители поиска это сделают 100 раз. Я не прав?
Windows Firefox
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Протестировал .../openid/ Человекопонятный метод checkid_setup объяснил мне, что подпись протухла, a http://poxod.com/lev/ - не мой URL. А вот автоматопонятный checkid_immediate сработал (сказал "Автоматическая идентификация не удалась. Вам нужно проследовать по адресу..."), и после проследования и разрешения поздравил меня с тем, что я действительно я.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ага... Стоп! А кто у нас ту недавно был не прошедший тест? Может, ему тоже автоматоподобный попробовать?
Windows Firefox
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Проверка .../openid2/ - без проблем, Valid.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ага, спасибо...
Windows Opera
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Проверял https://www.google.com/accounts/o8/id

со страницы http://lleo.aha.ru/blog/openid/:
не удалось получить страницу https://www.google.com/accounts/o8/id (error setting certificate verify locations: CAfile: /usr/local/share/curl/curl-ca-bundle.crt CApath: none )

со страницы http://lleo.aha.ru/blog/openid2/:
ERROR CODE: OPENID_NOSERVERSFOUND
ERROR DESCRIPTION: Cannot find OpenID Server TAG on Identity page.
Linux
whois*: title='{#countryname}
Чертаново{Россия'> {city:|:{#countryname}|*:Чертаново{Россия|}}
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
И во втором режиме тоже? По первой ссылке?
Linux Ubuntu Firefox
1
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
LIKE все-таки самый страшная операция БД, но это не значит что в данном конкретном случае её надо бояться - меньше 10000 постов, редко происходит - ну и ладно.

А вот LIKE в поиске есть смысл и попугаться - самый популярный метод DOSа это DOS формы поиска. Попробуй нагрузить себе поиск чем-то типа ab из комплекта апача и вполне возможно все очень быстро упадет. Для поиска нужен full text index (опять таки, по хорошему), про mysql'ный рассказывают много плохого, но есть Sphinx
Windows Opera
0
0
batc0h
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> И во втором режиме тоже? По первой ссылке?
Да, то же самое.

всего комментариев: 28

<< предыдущая заметка следующая заметка >>


Include not found: `/home/www/lleo.me/blog/template/_reklamnaya_lirica.htm`