Start » WordPress » Plaginovi » The SEO Framework naspram Yoast SEO

The SEO Framework naspram Yoast SEO

Updated: 23/09/2020.

U ovom članku delim iskustvo svog poređenja popularnih WordPress SEO plaginova: The SEO Framework i Yoast SEO. Uz neke osnovne informacije i poređenje. Ograda: nisam nikakav SEO guru, nindža i sl, sve što ovde pišem je na osnovu mog znanja i iskustva. Svaka dopuna i ispravka su dobrodošli. Za više detalja o samom plaginu, možete videti moju ocenu The SEO Framework (TSF) plagina.
Ažuriranje 28. februara 2020: autori The SEO Framework plagina su imali konstruktivno argumentovane zamerke na metod testiranja koji sam koristio. Tako da sada testiram novi metod testiranja brzine sajtova. Dok se to ne završi, ovde prikazane rezultate testova treba ipak uzeti sa rezervom i najbolje probati na svom sajtu i za sebe koji plagin je bolji.
Ažuriranje 1. marta 2020: ponovio sam testove, preciznijom metodom testiranja i u poslednjem, 7. poglavlju dajem rezultate i revidiran zaključak. Ostavljam originalne rezultate testova kao podsetnik na svoju grešku (i glupost) – kao što je objašnjeno u poslednjem poglavlju. Ali ću u originalnoj verziji precrtati rezultate testova i zaključke za koje mislim da nisu relevantni.

Sadržaj:

  1. Šta su to WordPress SEO plaginovi?
  2. Yoast SEO plagin
  3. Prelazak sa Yoast SEO na The SEO Framework
  4. Poređenje Yoast SEO i The SEO Framework
  5. Rank Math i druge alternative za SEO plagin
  6. Zaključak i moje mišljenje
  7. Preciznije merenje i revizija zaključka
    7.1. Rezultati testova
    7.2. Revidiran zaključak


1. Šta su to WordPress SEO plaginovi?

U posebnim člancima objasnio sam šta je to SEO, kao i šta je to autoritet domena i backlinkovi. Ukratko: SEO je obeležavanje sadržaja na sajtu tako da pretraživači lakše shvate šta se tačno nalazi na sajtu (na svakoj stranici, svakoj slici, koja je struktura sajta itd.). Ljudi ovaj termin često koriste pogrešno i mistifikuju – što se u praksi svodi na “SEO magiju kojom sajt bude bolje rangiran”. Istina je da dobro urađen SEO pomaže da se sajt rangira spram toga koliko mu je dobar sadržaj, a ne gore od toga. Tj. SEO ne može “bustovati” sajt, najbolje što se može uraditi je da se nigde ne zabrlja. Proces je sličan slaganju knjiga na polici za lakše pronalaženje. Nema magije, ali ako ne složite po autorima, pa po nazivima knjiga, pronalaženje željene će biti teže.

Šta su onda WordPress SEO plaginovi? Plaginovi koji olakšavaju da unesete podatke o stranicama: meta opise slika, mapu sajta itd. (za detalje videti gore linkovani članak).

Ipak, i po pitanju SEO plaginova sam se naslušao priča, čak i od iskusnih developera, kako plagin “ABC radi bolji SEO od plagina XYZ”.


2. Yoast SEO plagin

Ovo je prvi SEO plagin koji sam koristio kada sam se počeo “igrati” sa WordPress-om, 2015. godine, za svoj biciklistički sajt.

Yoast kompanija je dugo na tržištu i redovno prate dešavanja na sceni – sve WordPress, Google, Google AMP, schema.org promene itd, implementirajući ih u svoj SEO plagin.

Ovaj plagin radi posao. Nisam primetio da na mojim sajtovima neka stranica (ili/i slika) nisu dobro markirane. Pregledan je interfejs, sa lepo objašnjenim menijima i omogućava da se sve lepo taguje, kako treba. Radi odlično i u besplatnoj verziji. Glavna zamerka koju čujem na račun Yoast SEO je “pretrpanost opcijama”. Nepotrebne opcije se mogu isključiti, tako da ne dave u backend-u.

Opcije za konfiguraciju Yoast SEO plagina
Opcije za konfiguraciju Yoast SEO plagina
Slika 1

Dodatna čar je što omogućava i vizuelno dodavanje “breadcrumbs” na sajtu. Poput:
Home » WordPress » Plaginovi

Primer koda korištenog za GeneratePress child temu (na ovom sajtu) – unosi se u functions.php:

// BEGIN Yoast SEO breadcrumbs

add_action( 'generate_before_content', 'dev_add_yoast_breadcrumbs' );
function dev_add_yoast_breadcrumbs() {
    if ( function_exists('yoast_breadcrumb') ) {
        yoast_breadcrumb( '<p id="breadcrumbs">','</p>' );
    }
}

// END Yoast SEO breadcrumbs

Kao što možete videti, Yoast SEO radi sve što mi je potrebno – prilično dobro. Ipak, čitao sam puno pohvala o tome kako je The SEO Framework bolje napisan, bolje optimizovan, a kako je Yoast pretrpan i loš, pa sam odlučio probati nešto drugo:


3. Prelazak sa Yoast SEO na The SEO Framework

Pošto, radi prelaska na The SEO Framework, ne bih voleo od nule pisati sve meta i alt tagove i sl, gledao sam kako uraditi ovaj prelazak što “bezbolnije”. Rešenje je sledeće:

Eksport podataka iz Yoast-a u The SEO Framework, pomoću SEO Data Transporter-a
Eksport podataka iz Yoast-a u The SEO Framework, pomoću SEO Data Transporter-a
Slika 2


Ostaje još da se isključi i obriše Yoast SEO plagin, kako ne bi dolazilo do konflikata. Podaci koji su prebačeni su sledeći:

  • Meta naslovi;
  • Meta opisi;
  • Robots meta podešavanja, poput “noindex”, “nofollow”, i “noarchive”;
  • Custom canonical URL-ovi;
  • Custom redirect URL-ovi.

Više detalja dato je (na engleskom) u The SEO Framework dokumentaciji za migraciju. Uglavnom, ostaje nešto da se proveri i izmeni ručno. Ali većina stvari je odrađena automatski.


4. Poređenje Yoast SEO i The SEO Framework

Prvi utisak The SEO Framework korisničkog interfejsa: drugačiji je. Mora se odvojiti malo vremena da se istraži i da se navikne. Yoast ima lepše urađena objašnjenja svake opcije, sa sve hiperlinkom ka njihovoj, inače odličnoj, bazi znanja. Dok The SEO Framework nije tako jednostavan za početnike. Srećom, većina opcija je podešena kako treba “po difoltu”.

Ipak, ovo je nešto što se može prevazići – uz malo učenja, istraživanja i eksperimentisanja. Ono što je mene najviše interesovalo su poboljšanja u performansama. Pošto oba plagina omogućavaju da se sav sadržaj taguje kako treba. Svaki na svoj način, ali tu je suština (i rezultat, barem koliko sam mogao proveriti) manje-više ista. Dakle, da li je The SEO Framework brži? Sudeći po rezultatima mojih testova – nije. Možete videti i sami (uradio sam više testova da potvrdim, ali neću linkovati sve rezultate testova, jer ovi oslikavaju prosek i odnos):
Ažuriranje: videti rezultate rađene preciznijim metodom merenja brzine sajta u 7. poglavlju.

Volim reći da je jedno dobro merenje bolje od 1000 stručnih mišljenja.

Druga zamerka koju imam na The SEO Framework je što traži poseban plagin ako želite da se u navigaciji sajta vide breadcrumbs. Rešenje za to je plagin Breadcrumb NavXT, uz dodavanje sledećeg koda u functions.php child teme:

// breadcrumbs Breadcrumb NavXT

add_action( 'generate_before_content', function() {
    ?>
        <div class="breadcrumbs" typeof="BreadcrumbList" vocab="http://schema.org/">
            <?php if(function_exists('bcn_display'))
            {
                bcn_display();
            }?>
        </div>
    <?php
} );

// end breadcrumbs Breadcrumb NavXT


Rešenje bez upotrebe plagina, sa nešto više prilagodljivog custom koda:

/*=============================================
                BEGIN BREADCRUMBS
=============================================*/
//  to include in functions.php
function the_breadcrumb()
{

	$lg_home_name ="Home";
	$lg_archive_by_category = "";
    $lg_search_results_for = "Search:";
    $lg_posts_tagged = "Keyword:";
    $lg_articles_posted_by  = "Author:";


    $showOnHome = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $delimiter = '&raquo;'; // delimiter between crumbs
    //$home = 'Home'; // text for the 'Home' link
    $home = $lg_home_name; // text for the 'Home' link
    $showCurrent = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb

    global $post;
    $homeLink = get_bloginfo('url');
    if (is_home() || is_front_page()) {
        if ($showOnHome == 1) {
            echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a></div>';
        }
    } else {
        echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' ';
        if (is_category()) {
            $thisCat = get_category(get_query_var('cat'), false);
            if ($thisCat->parent != 0) {
                echo get_category_parents($thisCat->parent, true, ' ' . $delimiter . ' ');
            }
            //echo $before . 'Archive by category "' . single_cat_title('', false) . '"' . $after;           
            echo $before .$lg_archive_by_category. ' ' . single_cat_title('', false) . '' . $after;

        } elseif (is_search()) {
            //echo $before . 'Search results for "' . get_search_query() . '"' . $after;
            echo $before  .$lg_search_results_for.' "' . get_search_query() . '"' . $after;
        } elseif (is_day()) {
            echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
            echo '<a href="' . get_month_link(get_the_time('Y'), get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
            echo $before . get_the_time('d') . $after;
        } elseif (is_month()) {
            echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
            echo $before . get_the_time('F') . $after;
        } elseif (is_year()) {
            echo $before . get_the_time('Y') . $after;
        } elseif (is_single() && !is_attachment()) {
            if (get_post_type() != 'post') {
                $post_type = get_post_type_object(get_post_type());
                $slug = $post_type->rewrite;
                echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a>';
                if ($showCurrent == 1) {
                    echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
                }
            } else {
                $cat = get_the_category();
                $cat = $cat[0];
                $cats = get_category_parents($cat, true, ' ' . $delimiter . ' ');
                if ($showCurrent == 0) {
                    $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
                }
                echo $cats;
                if ($showCurrent == 1) {
                    echo $before . get_the_title() . $after;
                }
            }
        } elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) {
            $post_type = get_post_type_object(get_post_type());
            echo $before . $post_type->labels->singular_name . $after;
        } elseif (is_attachment()) {
            $parent = get_post($post->post_parent);
            $cat = get_the_category($parent->ID);
            $cat = $cat[0];
            echo get_category_parents($cat, true, ' ' . $delimiter . ' ');
            echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a>';
            if ($showCurrent == 1) {
                echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
            }
        } elseif (is_page() && !$post->post_parent) {
            if ($showCurrent == 1) {
                echo $before . get_the_title() . $after;
            }
        } elseif (is_page() && $post->post_parent) {
            $parent_id  = $post->post_parent;
            $breadcrumbs = array();
            while ($parent_id) {
                $page = get_page($parent_id);
                $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
                $parent_id  = $page->post_parent;
            }
            $breadcrumbs = array_reverse($breadcrumbs);
            for ($i = 0; $i < count($breadcrumbs); $i++) {
                echo $breadcrumbs[$i];
                if ($i != count($breadcrumbs)-1) {
                    echo ' ' . $delimiter . ' ';
                }
            }
            if ($showCurrent == 1) {
                echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
            }
        } elseif (is_tag()) {
            //echo $before . 'Posts tagged "' . single_tag_title('', false) . '"' . $after;
			echo $before . $lg_posts_tagged .' "' . single_tag_title('', false) . '"' . $after;
        } elseif (is_author()) {
            global $author;
            $userdata = get_userdata($author);
            //echo $before . 'Articles posted by ' . $userdata->display_name . $after;
            echo $before . $lg_articles_posted_by.' ' . $userdata->display_name . $after;
        } elseif (is_404()) {
            echo $before . 'Error 404' . $after;
        }
        if (get_query_var('paged')) {
            if (is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author()) {
                echo ' (';
            }
            echo __('Page') . ' ' . get_query_var('paged');
            if (is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author()) {
                echo ')';
            }
        }
        echo '</div>';
    }
}

add_action( 'generate_before_content', 'tabela_zaglavlje' );
function tabela_zaglavlje(){
  if (function_exists('the_breadcrumb')){
  the_breadcrumb();
  echo "<hr style='margin:10px 0 20px 0;'>";
  }
}


/*=============================================
                END BREADCRUMBS
=============================================*/

Konstruktivna diskusija na Reddit-u u vezi The Seo Framework vs Rank Math (između ostalog), sa uključenjem developera The Seo Framework.

Na forumu za podršku, autori plagina su obrazložili zbog čega još ne uvode opciju prikazivanja breadcrumbs. To što su napisali po meni ima smisla. Tema: About the “Breadcrumbs”.


5. Rank Math i druge alternative za SEO plagin

Rank Math je plagin koji mnogi hvale na sva usta u poslednje vreme. Pošto sam prilično temeljan & analitičan, istražio sam malo pre odluke da li da testiram ovaj plagin. Našao sam linkove koje preporučujem da pročitate, istražite još, pa sami zaključite je li ovaj plagin vredan truda:

Još jedan popularan i hvaljen plagin (za koji nisam našao ovako ružnih informacija kao za Rank Math) je All In One SEO. Kada sam istraživao na početku rada sa WordPress (2015), ovaj plagin je davao puno manje funkcionalnosti u besplatnoj verziji, u odnosu na besplatnu verziju Yoast SEO. Nisam u međuvremenu proveravao kakva je situacija.

Postoji još mnoštvo drugih plaginova. Siguran sam da svi imaju svojih prednosti i mana i da će za različite ljude i različite sajtove, verovatno neki biti bolji, neki lošiji. Najbolje je raspitati se, testirati, pa videti šta je najbolje.


6. Zaključak i moje mišljenje

Yoast SEO je daleko od savršenog plagina. Bilo je u prošlosti problema prilikom apdejta. Recimo problem sa upravo gore pominjanim breadcrumbs. Nisam dobio korisno rešenje od developera, ali je problem na volšeban način nestao iz Google Search konzole. Do trenutka pisanja ovog teksta nisam shvatio šta se tu bilo desilo i u čemu je bio problem. Za drugu Yoast brljotinu, videti revidirani zaključak u poglavlju 7.2.

Ipak, velika većina plaginova je u nekom momentu pravila probleme prilikom apdejta – a ni jedan nije savršen. The SEO Framework po mojim testovima ne radi brže, a fali mu i funkcionalnost da prikazuje breadcrumbs u navigaciji, što zahteva dodatni plagin, što dodatno komplikuje stvari i usporava.

Nisam ovo očekivao. Nakon svih pohvala, računao sam da će test potvrditi bolje performanse i da onda prebacim sve sajtove na The SEO Framework. Makar i bez breadcrumbs u navigaciji. 🙂 Kako za sada stvari stoje, ostajem na Yoast SEO.

Ažuriranje 28. februara 2020: u međuvremenu sam rešio pružiti The SEO Framework-u još jednu šansu, na novom sajtu. Takođe, odlučio sam uraditi još jedan, temeljniji uporedni test performansi – dodaću rezultate kad bude gotov.
Ažuriranje 1. marta 2020: videti rezultate testova rađene preciznijim metodom u narednom poglavlju:
Ažuriranje 1. maja 2020: videti svakako i revidirani zaključak u poglavlju 7.2.


7. Preciznije merenje i revizija zaključka

Ovaj uvodni deo možete preskočiti i otići odmah na rezultate testova u poglavlju 7.1. Ovaj deo pišem radi objašnjenja i svoje savesti. Elem, nakon prvobitno urađenih testova, podelio sam rezultate u Reddit diskusiji o SEO plaginovima. Tu su se uključili i autori The SEO Frameworka, i naveli osnovane zamerke na (ne)preciznost korištenog metoda testiranja. Strpljivo i argumentovano su mi skrenuli pažnju na nedostatke. Tako da sam razvio drugi metod testiranja sajtova. Linkovana stranica ga objašnjava u detalje. Ukratko, nije savršen, ali je najbolje što mogu sa trenutnim znanjem i raspoloživim sredstvima. Utvrdio sam i dokumentovao koliku grešku pravi taj metod testiranja, tako da mogu računati sa tim prilikom tumačenja rezultata (sa GTmetrix iznosi 7%, ili%i 0,05 sekundi u vremenu učitavanja stranice, dok sa Octoperf testovima opterećenja iznosi 14%, ili/i 0,1 sekundu).

Ne volim nepravdu i, kako novi rezultati testova pokazuju, prvobitni rezultati su bili nepravedni prema autorima The SEO Framework plagina i, podjednako loše, naveli su i mene, a i svakog ko čita moj test, na pogrešan zaključak.

U gore linkovanoj Reddit diskusiji, bilo je i prozivanja kako me možda Yoast plaća za ovo (korišten izraz je “Astroturfing” – morao sam ovo Guglati). Isto tako, očekujem da će posle ove revizije, možda neko zaključiti da su me autori The SEO Framework obrlatili, platili, ili šta sve ne. Mogu samo reći, a na čitaocu je da mi veruje, ili ne veruje na reč: jedini kontakt koji sam do trenutka objavljivanja ove revizije imao sa pomenutim autorima je preko (konstruktivne & edukativne) Reddit diskusije. Moj glavni cilj je da vidim šta je najbolje za moje sajtove, pa da to koristim.

Dodao bih još da su ljudi napravili dobar proizvod i da sam siguran da im nije bilo pravo da se javno objavi “objektivan” test (zaista sam se trudio da ga takvim napravim) koji pokazuje netačne podatke. Ipak, kulturno su i strpljivo naveli greške metoda testiranja, bez ikakve svađe i grubih reči – što pokazuje profesionalnost i zrelost, ako ništa drugo. Ovom prilikom im nudim svoje iskreno izvinjenje – stvarno sam originalne testove, kao i ove, revidirane, radio najbolje što ja mogu. Kako kažu: čovek se uči dok je živ (i opet glup umre).


7.1. Rezultati testova

Evo GTmetrix testova brzine, i Octoperf testova brzine pri opterećenju sajta (korišteni metod testiranja). Test sajt 1 (TS1) je koristio Yoast, a Test sajt 2 (TS2) The SEO Framework.

Yoast naspram The SEO Framework rezultati GTmetrix testova brzine
Yoast naspram The SEO Framework rezultati GTmetrix testova brzine
Slika 3


Rezultati pokazuju da je The SEO Framework (TS2) brži. Čak i ako se uzmu u obzir greške pri merenju, svakako bih rekao da Yoast nije brži – moji prvobitni rezultati testiranja su očigledno bili neprecizni.

Yoast naspram The SEO Framework rezultati Octoperf testa opterećenja
Yoast naspram The SEO Framework rezultati Octoperf testa opterećenja
Slika 4


Octoperf testovi opterećenja pokazuju minimalnu razliku, u granicama greške metode merenja. Opet: ne bih rekao da je Yoast brži. Koga zanima, ovde su linkovi ka detaljnim rezultatima Octoperf testova, u .pdf formatu:


7.2. Revidiran zaključak

The SEO Framework je kvalitetan plagin. Ako vam breadcrumbs nisu od ključnog značaja, vredi mu dati šansu (pošto i dalje zahteva instaliranje dodatnog plagina ako želite prikazati breadcrumbs). Meni lično, možda zbog navike, Yoast korisnički interfejst deluje pregledno i praktično – kada se jednom podesi (stvarno imaju sve lepo objašnjeno, sa linkovima ka odličnoj bazi znanja – to se mora priznati).

Nisam poredio testove brzine sa uključenim plaginom za prikaz breadcrumbs. Voleo bih da tu mogućnost uključe u svoj plagin, a bez da ga pretrpavaju nepotrebnim opcijama (što je glavna zamerka Yoast plaginu). Za sad sam instalirao The SEO Framework na novi sajt, dok su postojeći još uvek sa Yoast. Na novom sajtu, gde nema posla oko prebacivanja svih tagova i taksonomija, a pogotovo kome breadcrumbs nisu važni, The SEO Framework ja svakako dobar, ako ne i bolji izbor od Yoast-a (mada, opet, ne bih rekao ni da je Yoast loš, pored sve povike kako je “pretrpan”).

Ažuriranje 1. maj 2020: Update na Yoast verziju 14 napravio je problem. Problem nije rešen ni sa 4 zakrpe koje su usledile u 48 sati nakon objave verzije 14. Na mojim sajtovima, to se manifestuje punjenjem error_log fajla raznim greškama vezanim za Yoast, sve dok ne zauzme sav prostor na disku (po 5 GB dnevno naraste). Ovo je moja prijava problema na Yoast SEO forumu za podršku.

Problem se javlja samo na sajtovima koji imaju posete, na testnim sajtovima koji nemaju puno poseta, problema nije bilo.

Koliko sam shvatio, dosta ljudi ima problema sa novom verzijom Yoast-a. Sa druge strane, developeri Yoast-a bombastično su najavili revolucionarne izmene, pa čak i “do 10% brži rad sajtova”. Zatim su, nakon prvih problema, priznali da su se malo zeznuli, ali je to i dalje super, pogotovo posle poslednjih zakrpa (novija izjava Yoast developera). Moje iskustvo je da i dalje ne radi baš sjajno – tj. još uvek se javljaju greške, pa sam iskoristio bekape da vratim sajtove na stanje od pre nove verzije.

Na forumu za podršku, korisnik je sugerisao da se vrate na prethodnu stabilnu verziju dok sve ne isprobaju, ali su developeri Yoast-a na to rekli da “manje od 5% sajtova ima problem”. Nemam zvaničnu statistiku, ali sudeći po mojoj “nezvaničnoj” komunikaciji sa nekim hosting provajderima i developerima, problem je raširen i dosta bolan.

Moj zaključak, sudeći po trenutnom stanju stvari:

  • Yoast je napravio grešku.
  • Odbacuju je, umesto da je priznaju i isprave.
  • Sve ovo ide na ruku The SEO Framework i nikad nisam ozbiljnije razmatrao prelazak na isti.

Ovde je Reddit diskusija o novoj Yoast SEO verziji i indexables. Developeri plagina The SEO Framework su dali svoje mišljenje. Ono što nisam našao je odgovor Yoast developera o tome šta tačno radi nova verzija i kako. Takođe ne mogu naći uporedni test stare verzije i nove, navodno “5 do 10% brže” verzije sa indexables. Sačekaću još koju nedelju da vidim jesu li ispeglali sve bagove, pa uraditi sam komparativni test svojom metodom testiranja sajtova.

Ažuriranje 14. septembra 2020: Ostavio sam jedan testni sajt da radi sa Yoast. Sajt ima svega nekoliko stranica i članaka. Tokom prethodnih meseci, baza mu je narasla na preko 700 megabajta! Deaktiviranje i brisanje Yoast-a nije pomoglo. Koristio sam plagin WP-DBManager za brisanje svih Yoast polja (nisam radio preko PhpMyAdmin), čime je problem rešen, baza se vratila na svega nekoliko MB.

Koliko sam probao, The SEO Framework, kad/ako se deinstalira, lepo počisti sve za sobom – što je po mom mišljenju važno.

Napisao sam i ocenu (“review”) The SEO Framework (TSF) plagina.

Share...

Komentiraj

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.