оптимизация

Оптимизация на уебсайтове и обща конфигурация Част 1: Основни

Както се указва в името, в тази поредица от публикации ще споделя няколко начина за оптимизиране на вашия сайт. ТОВА НЕ Е ръководство за това как да станете номер едно в Google. Това е ръководство за това как да накарате сайта си да се зарежда бързо и да добавите малко сигурност.

Без значение дали става въпрос за статичен HTML сайт или сложна CMS система като WordPress или Joomla, всеки сайт се нуждае от някаква оптимизация – трябва да се зададат компресиране, кеширане, заглавки и т.н. Може да попитате – тъй като това се изисква за всеки сайт, защо не се зададе това на ниво сървър? Е, ако това е вашият собствен сървър, хоствате няколко сайта и имате root достъп – да, може да направите еднократна оптимизация. Но при споделен хостинг има стотици, дори хиляди сайтове на един сървър и те се нуждаят от конкретна оптимизация според нуждите. Например, не можете да задавате правила за пренасочване за целия сървър.

Каква оптимизация трябва да направя на моят сайт сайт?

За WordPress и Joomla има модули за (почти) всичко. Кеш, CORS хедъри, LazyLoad, компресия, SEO оптимизация … каквото се сетите. Но има и недостатък. Спирате за момент, поглеждате и виждате сайта си с десетки модули, всеки от които със свои .css и .js файлове, и всички тези файлове са допълнителна заявка към сървъра при зареждане на вашия сайт. И тук идват .htaccess файловете. Ако авторът на модула мисли за вас, той ще го направи така, че модулът да няма .css или .js файлове, заредени във фронт-енда, а ще постави правилата във файла .htaccess на вашия уебсайт. И тук идва лошата новина.

Ако разгледаме уроците на apache, налични на apache.org, ето какво казват те за .htaccess файлове:

htaccess файлове (или "разпределени конфигурационни файлове") предоставят начин за извършване на промени в конфигурацията за всяка отделна директория. Файл, съдържащ една или повече конфигурационни директиви, се поставя в определена директория с документи и директивите се прилагат към тази директория и всички нейни поддиректории.

Дотук добре. Можем да поставяме .htaccess файлове практически навсякъде и можем да задаваме различни правила за всяка директория, като просто редактираме файла .htaccess в основната папка на тази директория. Но ако прочетем по-нататък:

По принцип би трябвало да използвате .htaccess файлове само когато нямате достъп до основния конфигурационен файл на сървъра. Има например често срещано погрешно схващане, че удостоверяването на потребителя винаги трябва да се извършва във .htaccess файлове, а в по-нови години и друго погрешно схващане, че директивите mod_rewrite трябва да влизат в .htaccess файловете. Това просто не е така. Можете да поставите конфигурации за удостоверяване на потребителя в основната конфигурация на сървъра и всъщност това е предпочитаният начин да правите нещата.

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

Като цяло обаче, когато е възможно, трябва да се избягва използването на .htaccess файлове. Всяка конфигурация, която бихте обмислили да поставите в .htaccess файл, може също толкова ефективно да бъде направена в раздел <директория> в основния ви конфигурационен файл на сървъра.

Има две основни причини да избягвате използването на .htaccess файлове. Първият от тях е производителността. Когато AllowOverride е настроено да разрешава използването на .htaccess файлове, httpd ще търси във всяка директория файлове .htaccess. По този начин разрешаването на .htaccess файлове води до намаляване на производителността, независимо дали всъщност ги използвате! Също така .htaccess файлът се зарежда всеки път, когато се иска документ. Освен това, обърнете внимание, че httpd трябва да търси .htaccess файлове във всички директории на по-високо ниво, за да има пълен набор от директиви, които трябва да приложат.

По този начин, ако се изисква файл извън директория /www/htdocs/example, httpd трябва да търси следните файлове: /.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/example/.htaccess и така, за всеки достъп до файл извън тази директория има 4 допълнителни заявки до файловата система, дори и да няма нито един от тези файлове. (Обърнете внимание, че това би било така само ако .htaccess файловете бяха активирани за /, което обикновено не е така).

Обърнете внимание на последния цитат – „за всеки достъп до файл извън тази директория има 4 допълнителни заявки до файловата система, дори ако няма нито един от тези файлове“. Сега нека си представим, че основната ни папка на уебсайта не е в 4-та директория, а в 6-та? Това повишава заявките до 6. И ако на този сървър има 1000 сайта, всеки със собствен .htaccess файл, това прави общо 6000 заявки. Разбира се, съмнително е всичките 100 сайта да бъдат достъпни едновременно. Въпросът е, че използването на .htaccess е толкова добро, колкото и лошо.

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

Например клиентите, хостващи своя сайт на нашия сървър, имат достъп до хостинг панел ISPCOnfig. В него добавянето на тези правила е много просто. Отворете сайта си за редактиране, отидете в раздела “Опции”, превъртете надолу и ще видите 2 полета – едно за допълнителни PHP директиви и едно за допълнителни директиви на Apache (от съображения за сигурност, това поле е ограничено за достъп само за администратори). Ако имате сайт, хостван при нас и желаете да направим някакви промени, изпратетени имейл на support@blacktiehost.com). Изображението по-долу показва някои директиви, използвани за този сайт:

Горe-описаният метод добавя тези директиви към файла .vhost на сайта. Поставянето на тази конфигурация в конфигурационния файл на сървъра води до по-малко понижаване на производителността, тъй като конфигурацията се зарежда веднъж при стартиране на сървъра, а не всеки път, когато се иска файл.

Така че, както е описано по-горе, когато правите оптимизация на вашият сайт е препоръчително е да добавите всички необходими директиви директно във вашия .vhost файл или да използвате функциите на хостинг контролния панел (ако има такива). Начинът, по който се добавят правилата и в двата сценария, е еднакъв


<IfModule your_module_name>
your_custom_code_here
</IfModulle>

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

Използването на .vhost файла за оптимизация обаче има известен недостатък – сървърът трябва да бъде рестартиран, за да се приложи конфигурацията. Повечето хостинг компании имат някакъв вид cron / автоматизация за рестартиране на сървъра по график или когато .vhost файлът е променен, но в повечето случаи не можете да сте сигурни. Така че, можете да използвате вашия .htaccess файл, за да тествате директивите, които искате да добавите, за да сте сигурни, че те не нарушават правилната работа на вашия сайт и че работят както се очаква, и след като сте сигурни, ги преместете във вашия .vhost файл.

Оптимизация на уебсайтове и обща конфигурация Част 2: Компресия и кеширане

ЗАБЕЛЕЖКА: Примерен .htaccess файл, изпълняващ всички техники в тези публикации, може да бъде намерен в края на част 3.

Вашият коментар