Pull to refresh
386
0
Дмитрий Котеров @DmitryKoterov

Пользователь

Send message
Целиком HTML-страницу будет, во-первых, слишком затратно по трафику, а во-вторых, все формы ведь будут сбрасываться. Нет, лучше страницу обновлять по кусочкам.
Обычный Linux c ulimit -n 1048576 и несколькими listen-сокетами. У меня открылось даже в perl-скрипте 200 тыс. сокетов, это не такое большое значение.
Там есть ограничение на максимальную длину сообщения — IN_MAXLEN.
Рабочий расход памяти — порядка 10М на 1000 одновременных соединений.
Кажется, есть первый кандидат на кроссбраузерное решение (дописал UPD3 в конце статьи).
Кстати, очень остроумная идея. К сожалению, заметить изменения через for (var k in top.frames) не удается — в FireFox при смене window.name это изменение не создает новый ключ в top.frames. Однако если сделать for (var i = 300; i < 5000; i++) if (top.frames[«frm» + i]) doSomething() (т.е. перебрать все мыслимые размеры IFRAME вручную), то ключ удается обнаружить. В частности, это работает в Опере 7!

Но, к сожалению, не работает в IE8 (может, и в более ранних тоже). В них изменение window.name вообще не влияет на top.frames.
Не давайте ссылки, пожалуйста, через тэги — хабр приво слово «script» в них обрабатывает.
Вот кликабельная ссылка: www.emposha.com/javascript/cross-domain-javascript-execution-library.html
Ну опять начинается. :-) При чем тут php-fpm и расход памяти? У php-fpm он только чуть-чуть ниже, чем у apache_mod_php.

Экономию памяти дает не php-fpm, а а) срезание медленных клиентов nginx-ом, и — в меньшей степени — б) запрет отдачи статики тем же процессом, что уже отдал когда-то динамику и съел у системы память. Про (а) все понятно — nginx нужно в любом случае использовать, что для apache, что для php-fpm, ибо пользователи на модемах и сотовых телефонах не дремлют. Про (б) же — если мы поставили apache_mod_php+nginx и медленных клиентов уже нет (т.е. все запросы выполняются быстро — кстати, нужно еще буфера nginx-а настроить правильно), то чаще всего не так уж и важно НА ОБЩЕМ ФОНЕ, отдаем мы статику апачем или же напрямую nginx-ом (зато если через apache отдавать, это обычно проще конфигурировать).

В общем, для экономного расхода памяти настроить php-fpm+nginx проще, чем apache_mod_php+nginx. Но это вовсе не значит, что «php-fpm дает экономию памяти» (в режиме с не-apache-like воркерами это еще и не всегда так). Просто нужно настраивать все правильно и измерять результаты.

Лично я люблю использовать php-fpm+nginx, но главное соображение для меня — не экономия ресурсов (ее можно добиться в обоих случаях), а минимизация числа конфигов, которые нужно исправлять при интенсивной разработке (особенно в системах с множеством «виртуальных хостов»).
Добавил в статью UPD2 — решение про авторесайз IFRAME. Увы, в Опере младше 10 версии — это не работает, будет бесконечный цикл перезагрузки страницы.
Насчет метода с якорем (fragment) в top.location — увы, он не работает в Опере младше 10-й версии. Почему-то при добавлении якоря к location убиваются все события на странице (включая setTimeout), так что нет никакой возможности обнаружить, что якорь появился (а также при добавлении якоря страница иногда перезагружается с сервера).
И еще отличный пост вот этот: habrahabr.ru/blogs/javascript/41669/
Там интересный прием с about:blank (интересно, работает ли он во всех браузерах).
Так не сработает, top.name с другого домена недоступен.

Однако про хак с window.name удалось нарыть кое-что интересное:
development.lombardi.com/?p=611
easyxdm.net/wiki/Default.aspx (а это вообще универсальная библиотека для кросс-доменного общения)
Есть и другая причина, почему тэг script на другой домен — не всегда хорошо: скрипт можно подменить на злоумышленный, и в итоге можно получить все куки главного домена и их куда-нибудь сохранить. Не всегда владелец master.com хочет, чтобы владелец slave.com видел его куки.
Это не сработает, когда parent на другом домене, чем iframe.
Написал вот и тут же родилась идея:

Страница slave.com/frame.html:
top.location = top.location + "#height=1000"

Кто проверит, работает ли? (Нет сейчас сервера под рукой.)
> Внутренняя учётная запись должна создаваться, тихо и незаметно
Вот именно поэтому я и назвал OpenID «протоколом ускоренной регистрации». Нужно смотреть изнутри. Учетная запись по любому создается на стороннем сервисе, потому что ведь надо к чему-то привязывать ресурсы, создаваемые пользователем. Заметно это для человека или незаметно — уже другой вопрос, зависящий от сервиса (чаще всего — заметно).

Information

Rating
Does not participate
Location
Россия
Registered
Activity