Създаване на големи уеб проекти - Създаване на уеб проекти, уеб проекти, уеб, уеб, създаване на уеб проект -

Всеки успешен уеб проект рано или късно има проблем с растежа. Съществуващите софтуерни и хардуерни ресурси вече не могат да се справят с нарастващото натоварване. За съжаление няма универсални рецепти. Във всеки проект добрият програмист ще програмира по различен начин. В тази статия обаче ще се опитам да дам някои типични препоръки за създаване на големи уеб проекти. В процеса на създаване и развитие на такива проекти, като правило, те се сблъскват с два проблема, които са почти противоположни по начина, по който се решават - високи скорости и големи количества данни.

високи скорости

Идеален пример за сайт, където скоростта е жизненоважна, е банерната мрежа. И така, ето няколко трика за ускоряване на банерни мрежи и други критични за скоростта сървъри.

Създаване на модули

Целта на тази техника е да компилира най-важните функции в сървъра. Идеята е много проста. Ако погледнем съотношението на времето, прекарано на различните етапи на изпълнение на заявката, виждаме интересна картина. Например, когато се изпълнява прост perl скрипт, следното се случва последователно:

създаване

1) Apache сървърът определя perl скрипта за изпълнение, подготвя го и го изпълнява; 2) скриптът всъщност стартира със стартирането на perl интерпретатора (това е файл с размер около половин мегабайт). Интерпретаторът на Perl, след като стартира, се поставя на 2 мегабайта в паметта на машината и едва след това започва да работи с потребителския скрипт; 3) тази работа започва с компилирането на програмата. Компилирането на програма по правило е един от най-дългите етапи на обработка на програмата; 4) само след предварително компилиране (в байт код) скриптът ще започне да се изпълнява.

unshift(@INC, 'Път до вашия модул');

%Location = ( '/myhandler' => 'PerlHandler' => 'MyHandler::view', 'SetHandler' => 'perl-script', 'PerlSendHeader' => 'on' >, );

Това казва на Apache и модула mod_perl, че ако потребителят поиска /myhandler URL, тогава модулът MyHandler трябва да се стартира, за да го обработи, и процедурата за преглед в него трябва да се изпълни. След като промените httpd.conf, трябва да рестартирате Apache. Между другото, всички файлове, посочени в конфигурационния модул, ще бъдат компилирани, когато сървърът се зареди, а не при първата заявка. Това ще увеличи скоростта на сървъра няколко пъти. Модулът MyHandler.pm може да изглежда така:

packageMyHandler; използвайте strict;

# Процедурен изглед подизглед печат " \n \nУра! Нашият манипулатор работи! \n \n"; >

Механизмът на манипулатора е мощен. Всъщност можете да замените всеки етап от обработката на заявката. Помислете например за създаване на ваш собствен механизъм за проверка на паролата:

пакет MyAuthorization; използване на строг;

# Sub манипулатор my $r = shift;

върне AUTH_REQUIRED освен ако $r;

my (undef, $password) = $r->get_basic_auth_pw; my ($login) = $r->connection->user;

върне AUTH_REQUIRED освен ако $password;

my $rev_login = reverse($login);

# Проверка на парола if ($rev_login ne $passwd_sent) връщане AUTH_REQUIRED; > else return OK; >

%Location = ( '/myhandler' => 'PerlHandler' => 'MyHandler::view', 'SetHandler' => 'perl-script', 'PerlSendHeader' => 'on' 'require' => 'valid-user', 'Limit' => 'METHO DS' => 'GET POST' >, 'AuthType' => 'Основно', 'AuthName' => 'PersonaUser', 'PerlAuthenHandler' =>'MyAuthorization ->handler()' >, );

Сега достъпът до /myhandler е защитен - браузърът ще покаже стандартен прозорец за потребителя да въведе парола. За повече информация относно технологията mod_perl посетете http://perl.apache.org/

Използване на тръбопроводи

База данни

join_buffer_size - буфер за създаване на изгледи, по подразбиране е 131072 байта;

key_buffer_size - буфер за работа с ключове и индекси. Размерът по подразбиране е 1048540;

sort_buffer - буфер за сортиране. По подразбиране е 2097116 байта.

Най-вероятно, когато се увеличи някакъв буфер, скоростта на изпълнение на свързаната с него задача ще се увеличи. Въз основа на нашата задача ще увеличим буфера за работа с ключове (скоростта на извличане на стойности от таблицата ще се увеличи), ще намалим буфера за сортиране (намаляваме скоростта на сортиране) и буфера за изглед (намаляваме скоростта на работа с изгледи). Редът за стартиране на MySQL демон ще изглежда по следния начин (специфичните стойности зависят от количеството памет в системата):

shell>safe_mysqld -O key_buffer=8M -O sort_buffer=1M -O join_buffer=16K

Нека да обобщим. Когато използвате база данни, работата на скрипта може да бъде значително ускорена чрез правилно конфигуриране на сървъра на базата данни. Ръководството за бази данни MySQL има специален раздел за оптимизация. За повече информация, моля посетете: MySQL разработчици - http://www.mysql.com postgresql разработчици - http://www.postgresql.org/ mysql оптимизация - http://www.mysql.cz/information/presentations/presentation-omsconcon и http://support.ultrahost.ru/mysql_opt.php

Големи обеми

Друг проблем на големите сайтове е голямото количество информация. Ако не прилагате никакви трикове, тогава поддръжката за прости html-сайт в даден момент ще отнеме твърде много време.

Обектно ориентирано програмиране

Въпреки това, ако изброим обектите, с които се занимават горните скриптове, получаваме много интересни резултати:

Обект "съобщение". Може да възразите, че посланията навсякъде са различни. Нищо подобно! Формите за представяне на съобщения се различават, но данните, структурата на полетата и методите за обработка са едни и същи. Автор, заглавие, тяло - и така във всички проекти.

Шаблониране

Част от HTML шаблона data/html/2.htx от нашия пример:

Име, фамилия на отговорното лице:">

Въпреки привидната сложност на схемата, тя има редица предимства. С негова помощ успяхме за кратко време да изградим система с повече от 400 вида различни статистики. Впоследствие, за да добавите нови статистики, беше необходимо само да напишете SQL заявки, да начертаете HTML шаблон и да промените конфигурацията на шаблонния скрипт. Новата страница със статистика се появи в системата автоматично.