Оптимизация на динамични сайтове и скриптове

ноември 13, 2008 от Васил Тошков · 15 коментара
Категории: Програмиране 

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

Повечето хора си качват сайтовете на така популярния и удобен “споделен хостинг”. Но този хостинг е споделен и трябва да се спазва определена култура, когато се използва. Различните сайтове използват споделени ресурси и когато един сайт товари повече и заема повече памет, то това се отразява на всички други.

Рядко се налага един сайт да има толкова много потребители и изчислителни нужди, че да се наложи да работи на VPS или на собствен сървър. Последните ми разработки около referring sites скрипта ми доказаха, че един сайт с много изчисления и потребители може да се оптимизира и да хаби ресурси колкото обикновен блог.

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

Ето и някои основни принципи, без да се задълбавам:

1. Използване на функции, изискващи по-малко ресурси.

Примерно в PHP е много по-ефективно да се използват функциите strpos() и strstr() за търсене на низ в текст, отколкото функцията preg_match(). Последната е проектирана за регулярни изрази и заема много повече памет и ресурси. Проверявайте за всяка функция какво прави и дали няма по-добра алтернатива.

2. Минимизиране на връзките към базата данни.

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

3. Използване на индекси (кеширане) на SQL ниво.

Повечето системи за обработка на бази данни, като MySQL, поддържат така нареченото кеширане на колони. То е полезно, когато ще търсим в дадена колона или ще сортираме по нея. Примерно, ако имате колона client и често Ви се налага заявка от вида: “SELECT * FROM clients WHERE client LIKE ‘%Ivanov’”, то добавете индекс към client.

4. Кеширане на информация с цел избягване на повторни заявки

Става въпрос за класическото кеширане, при което примерно създаваме отделен HTML за всяка страница и го качваме на сървъра. При следващо извикване на съответната страница, не товарим базата данни със заявки, а просто зареждаме кешираното копие. При промени в скрипта, всичко се кешира на ново, което е много по-оптимизиран процес.

5. Използване на бази данни в трета нормална форма

Това е малко по-сложно за кратко обяснение, но идеята е да има повече малки таблици с външни ключове между тях. Целта е да се избягват служебно празни полета и/или повтаряне на данни в дадена колона. Така се пести място и многократно се ускорява работата на системата. В MySQL външни ключове се правят при основа InnoDB.

6. Използване на PHP или сървърния скрипт само където е необходимо

Може цяла една HTML или друга страница да се генерира чрез PHP, примерно, но това изисква много повече функции и ресурси. Изглежда и по-сложно. Затова сървърният скрипт трябва да се използва само там, където наистина има нужда от него. Примерно, за изписване на текст не е нужно да викате echo “Ала бала”;, а е достатъчно да си напишете текста.

7. Избягване на типове като BLOB в SQL системата

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

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

Кои сайтове Ви носят посещения и по колко?

октомври 9, 2008 от Васил Тошков · 32 коментара
Категории: Програмиране 

От доста време имам идеята да направя инструмент, който да показва сайтовете, които носят посещения и броя им. Вчера, след дълги часове програмиране, пуснах Алфа версия на такъв инструмент. Проектът се намира на адрес referringlinks.com. Той е от тип “gadget” - всеки може да си сложи кода на своя сайт/блог и системата сама прави останалото.

За момента проектът е в Алфа версия, както вече казах. Може да има бъгове, аномалии и малки проблеми, за което се извинявам предварително. Кодът, който ще си слагат потребителите, е решен и няма да бъде променян. Затова всеки може да опита добавката като “beta tester”. Така ще имам и малко повече данни, с които да експериментирам и тествам системата.

Подобен скрипт изглежда прост, но изобщо не е. Всичко минава през HTML -> Javascript -> PHP -> SQL и после на обратно. Подобна техническа реализация е трудна, поне за мен, тъй като всеки език трябва да “плюе” следващия, а той по-следващия. Трудна е и защитата на самия сайт от атаки, а отговорността е голяма. Най-много усилия съм съсредоточил именно в тази насока.

Самата база данни също е доста сложна, защото е в трета нормална форма. За сървър се използва InnoDB, за да могат таблиците да са навързани с външни ключове. Ограничил съм броя на заявките към базата до минимум, с цел да не се товари сървърът. Системата пази всички IP адреси на посетителите от последните 30 дни, така че може да се гласува веднъж на месец с едно IP.

Преди малко сложих скрипта и на този блог и съм учуден от посещенията, които получавам от Българския Google. Както може да видите, системата се интегрира много лесно с дизайна на сайта и по никакъв начин не си личи, че е външен скрипт. Резултатът е стандартизиран html списък с необходимите данни. От SEO гледище търсачките не виждат връзките, които се генерират.

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

Потребителите имат опция да избират броя на връзките, които да се показват. По подразбиране този брой е 7. Може също така да се банват сайтове, които не искате да бъдат отчитани. Кодът за потребителите се състои от три части, като само средната част е задължителна. За съжаление не можах да накарам Wordpress да го изпише тук правилно. Вижте го от сайта.

Със скрипта от първата част на кода, можете да зададете броя на връзките и да баннете някои сайтове. Скриптът от третата част на кода служи за алтернатива при евентуални грешки в системата. Не съм пропуснал да си взема и връзка с цел SEO :) Разбира се, тази част от кода, както и първата, не са задължителни. Изисква се само средната, която вика script.js.

При евентуални бъгове, проблеми, въпроси и съвети (определено ще има), пишете в коментарите към тази тема. Ще има още доста публикации относно този инструмент в блога, защото имам още доста идеи около него, но за сега ще останат тайна :) Надявам се, че ще бъда полезен. Друго подобно нещо в Интернет за сега няма.

Има ли бъдеще Flash в Интернет от SEO гледище?

август 6, 2008 от Васил Тошков · 19 коментара
Категории: SEO, Програмиране 

Много хора взеха да ми говорят за Flash оптимизация, особено откакто Google се произнесоха, че вече индексират Flash сайтове. Много колеги около мен също са се запалили да учат Flash и предлагат подобни сайтове. В университета ми адски много хвалят едни курсове по Flash и хората се записват.

Най-странното е, че вече двама преподаватели се изредиха да ми обясняват колко голямо бъдеще имал Flash и как щели в бъдеще всички сайтове да се правят на него. Едни познати в средното също са им промили мозъците и са седнали да учат “езика на Интернет”, мотивирани, че са крачка преди другите.

Споря с всички тях, защото съм си SEO и Flash нещо не ми допада като техника. Не вярвам и че някога Flash сайт ще става за SEO. Нарекоха ме “неинформиран”, а аз се съгласих. Може би наистина нещо не съм много информиран, но те пък съвсем не са, щом започват с Flash, а не с HTML и CSS.

Един преподавател ми каза, че нямало начин да направиш разчупен сайт, без да използваш Flash. Контрирах го с един мой Java аплет, като му доказах, че с Java аплети мога да направя всичко, което може да се направи и с Flash. Помните ли колко бяха нашумели Java аплетите навремето? Сега изчезнаха.

Бяха изместени от Flash, просто защото се създават по-трудно. За да направиш аплет трябва да програмираш код, а за Flash е нужно просто да щракаш с мишката. Не че и там няма програмиране, но то е на едно привидно по-просто ниво. И в момента според мен Flash прогресира заради един голям пропуск в HTML - имплементирането на видео.

Просто няма по-лесен начин да се пусне видео в един сайт, от това да се мине през Flash. Трябваше да има таг <video>, както има таг <img>. В HTML 5.0 това е направено и според мен използването на Flash ще намалее с 90%, защото сайтове като YouTube просто ще си извикват видеото в оригиналния му формат.

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

Но нека не забравяме каква е целта на езика - презентации и анимационни филми в Интернет. Толкова! Но да се прави цял сайт на Flash е пълна глупост. Може Google да го индексира - ОК, но може ли от един блок Flash да отличи отделни страници и да ги класира? Дори да може, няма как да ни насочи към конкретна страница. Тоест, пак не става за SEO!

Искам да кажа на Flash феновете - използвайте технологията по предназначение. И аз мога да правя сайтове само с HTML без CSS, но не се мъча. Това му е хубавото на уеб програмирането, че си има езици за всичко. Не е като да научиш един език и да импортваш библиотеки - по-лесно е :) Дано повече хора го разберат.

Следваща страница »