سئو تکنیکال سایت جاوااسکریپتی و مشکلات گوگل

مشکل گوگل با جاوااسکریپت چیست؟

امان از دست کسانی که فکر می کنند همه چیز فنی هست و اصلا ذره ای حواسشون به بحث هزینه ها نیست! گوگل هیچ مشکلی با جاوااسکریپت نداره و نخواهد داشت. گوگل عاشق جاوااسکریپت هست. اما کراول و خزیدن ربات های گوگل برای رندر کردن و اجرای جاوااسکریپت در سایت ها به شدت پر هزینه هست. همیشه بحث توانستن و امکان داشتن چیزی نیست! اغلب، بحث صرفیدن چیزی هست!

ارتباط javascript با هزینه های گوگل

اگر قرار باشه گوگل میلیارد ها صفحه رو در روز به همراه جاوااسکریپتشون crawl و parse و download و render و execute کنه، یعنی باید چندین برابر حالت عادی که بیشتر به سورس صفحه (نه DOM) تکیه داره، هزینه کنه، هزینه پهنای باند بیشتر برای دانلود JS، هزینه اجرای جاواسکریپت که شامل حافظه RAM و CPU میشه و هزینه فضای ذخیره سازی یا Storage که نیاز داره.

این در حالی هست که درصد ناچیزی از وب سایت ها نیاز به جاوااسکریپت برای لود شدن محتوای اصلی صفحاتشون از سمت سرور دارند! در نتیجه، گوگل به صورت دستوری میاد میگه فقط سرور ساید رندرینگ! حتی Dynamic Rendering هم بی خیال شد و عقب گرد کرد! دیگه فقط SSR! قانون من گوگل رو رعایت کن تا بتونم ایندکس کنم و رتبه بدم!

داینامیک رندرینگ مارتین اسپلیت

چه تعداد از وب سایت ها نیاز به Javascript دارند؟

حتما با خودت میگی! ههه! محسن طاوسی این چه حرفیه! در این عصر هوش مصنوعی درصد ناچیزی از سایت ها نیاز به JS دارند؟ اصلا سایتی هست که بدون javascript درست نمایش داده بشه؟ اشتباهت همینجاست! بحث درست نمایش دادن نیست! بحث محتوای اصلی اولیه در source هست. با پرتال های سازمانی یا قسمت هایی از سایت ها که بعد از Login نیاز به جاوااسکریپت دارند کاری نداریم! با بخش هایی از سایت های موقع کار با فیلتر فروشگاه ها و دسته بندی ها که کاربر نتایج رو محدودتر می کنه (Faceted Navigation) کاری نداریم! با مرتب سازی یا Sort کاربر یا ارسال کامنت که بدون Postback کامنت ارسال بشه و بگه “ارسال شد” کاری نداریم! این ها نیازی به جاوااسکریپت هم داشته باشه مشکلی نداره.

 

محتوای اصلی اولیه یا Initial Content در سرور ساید رندرینگ چیست؟

مساله اصلی، اون محتوای اصلی اولیه Initial Main Content هست که با Enter کردن URL لود میشه و قبل از اجرای هر گونه Javascript یا لحاظ شدن CSS و استایل، در سورس صفحه یا View Source (Ctrl + U) مرورگر قابل مشاهده هست. اون محتوا باید بدون نیاز به اجرای جاواسکریپت مروگر کاربر، در سورس صفحه بارگزاری بشه. بایدی هست. بله! این همون چیزی هست که در فصل تکنیکال 3 دوره سئو به شدت روش تاکید دارم!

می دونم اگر توسعه دهنده و Developer هستی راحت نمی تونی موضوع ارتباط پول با جاوااسکپریت و گوگل رو درک کنی و طبق معمول که همیشه دنبال منبع معتبر هستی میخوای بری جستجو کنی و جمله واضحی از اینکه گوگل گفته اجرای جاوااسکریپت برام گرونه بگردی! اما بعید می دونم اینقدر ساده باشی که فکر کنی گوگل میاد اعلام ضعف کنه از خودش. گوگلی که وقتی خودش گفت بیاید داینامیک رندرینگ کنید و به عنوان راه حل خوب مطرح کرد، حتی از اون هم بعد از 3 سال عقب نشینی کرد که توی پست داینامیک رندرینگ منسوخ شد توضیح دادم!

 

Server Side Rendering چیست؟

همونطور که در پست سرور ساید رندرینگ چیست توضیح دادم، SSR یعنی کلا تمام یا اکثر محتوایی که قرار هست کاربر ببینه، از سمت سرور و بدون نیاز به اجرای جاوااسکریپت مرورگر کاربر، فراخوانی بشه. که خیلی Google Friendly هست.

 

Dynamic Rendering چیست؟

همونطور که در پست داینامیک رندرینگ چیست توضیح دادم، یعنی برای کاربر انسان واقعی(تشخیص توسط User Agent)، مبتنی بر javascript لود بشه اما برای ربات های گوگل(تشخیص توسط IP و User Agent) به صورت SSR یا سرور ساید لود بشه که گوگل باهاش مشکلی نداشته باشه.

Hybrid Rendering چیست؟

همونطور که در پست هایبرید رندرینگ چیست توضیح دادم، یعنی همون SSR یا سرورساید رندرینگ با این تفاوت که اون محتوای اصلی اولیه یا Initial Content ما SSR باشه و بدون نیاز به اجرای جاواسکریپت مرورگر، در سورس(نه DOM) صفحه بارگزاری بشه. بقیه اجزای صفحه و محتوا، هر جوری دلمون خواست یا به صورت CSR و نیازمند به جاوااسکریپت.

Static Rendering چیست؟

همونطور که باز در پست استاتیک رندرینگ چیست توضیح دادم، عملا از نظر سئو همون سرور ساید رندرینگ یا SSR میشه. محتوای اصلی اولیه به صورت Cache شده یا از CDN فراخوانی میشه و در سورس صفحه(نه DOM) همون اول قرار می گیره. از نگاه غیر از SEO، از نظر سرعت و سایر موارد تفاوت داره.

Client Side Rendering چیست؟

همه بساط ما سر همین مدل رندرینگ هست! یعنی نیاز به اجرای جاوااسکریپت روی مرورگر برای نمایش و بارگزاری محتوای اصلی صفحات. هم در html source و هم در ظاهر و نمایش برای کاربر. تعریف کامل تر با جزئیات بیشتر رو در پست کلاینت ساید رندرینگ چیست توضیح دادم.

 

مستندات گوگل درباره سئو سایت های جاواسکریپتی

حالا منابع دیگه گوگل رو میخوای که گفته من مشکل دارم با JS؟ لازم نیست بگردی! من کار تو رو راحت کردم! توی این لینک که از 2019 منتشر کرد و تا 2025 مدام به روز کرد و گوگل به غلط کردن افتاد داره میگه من رسما Client Side Rendering رو نیستم. گوگل دوست نداره مستقیم بگه من بدبخت میشم با رندرینگ مبتنی بر جاوااسکریپت. میگه اصلا توصیه نمی کنم! همین! این ادبیات همیشه گوگله! به من اعتماد کن! بعد میاد میگه فقط Server Side Rendering و Hybrid Rendering و Static Rendering رو پیشنهاد می کنم! عملا همشون نسخه ثانویه ای از سرور ساید رندرینگ هستند! توی همون دقایق اول ویدیو هم میگه باید هر صفحه جدا باشه و نیا با JS محتوای صفح رو کلا عوض کن. هر URL نماینده یک محتوای منحصر به فرد خودش باشه.

می بینی؟ ذهنت سمت SPA و عشق بازی با Single Page Application ها بود که گوگل باهات همراهی نکرد! از همون اول! بعد میاد یه کابوس دیگه هم برات درست میکنه! میاد میگه من فقط تگ a رو اگر href داشته باشه دنبال می کنم! ولی با جاوااسکریپت نه! دقیقا اوایل صفحه javascript SEO basics، اومده به SEO Link Best Practice لینک داده و این موضوعی که گفتم رو مطرح کرده! راستی آموزش سئو سایت های SPA رو ببین!

اما یک حیله و نیرنگ مثل همیشه به کار برده که همونطور که گفتم از سیاست های همیشگی گوگل هست که نمیاد به ضعف اذعان کنه! دقیقا همونجا نوشته:

It’s fine to use JavaScript to inject links into the DOM, as long as such links follow the best practices for crawlable links.

میگه: “خیلی هم خوبه که از جاواسکریپت استفاده کنی که لینک ها رو بفرستی تو DOM. یعنی با جاوااسکریپت، لینک هاتو بسازی، تا زمانی که این شرایط من رو برای خزش پذیر بودن یا قابل Crawl بودن لینک ها رعایت کنی!” یعنی گوگل جمله متضاد تر از این تو عمرش نمی تونست بگه! چون از این طرف میگه اکی با جاواسکریپت لینک درست کنی از اون طرف شرایطش برای کراول لینک ها اینه که جاوااسکریپتی ساخته نشده باشن! هنوز هم گارد داری به حرف هام یا قانع شدی؟

حالا توی مستندات Link Practice میاد از جمله “Not recommended (but Google may still attempt to parse this):” استفاده می کنه! گفتم که! گوگل خان دوست نداره ضعف نشون بده و شدیدا خودشیفتست! نمیاد بگه پول ندارم نمیصرفه کراول کنم که! میگه توصیه نمی کنم ولی ممکنه باز بخونم این لینک رو. می دونی این یعنی چی؟ یعنی نابود شدن crawl budget وب سایتت که همش سر Javascript میره! گوگل عاشق سایت های ارزونه! سایت هایی که خزیدن و Crawl براش ارزون بیفته در  عین حال برای کاربر هم مفید باشن! حالا هی برو بگو نه تو این عصر، گوگل نمیتونه یعنی؟ هنوز فکر میکنی بحث تونستن و نتونستن هست؟ دنیا با پول میچرخه عزیز دل من. نه با فانتزی های ذهنی و ایده آل های تکنولوژیکی ما!

حالا من به عنوان راه حل اومدم تو آموزش سئو سایت های جاوااسکریپتی فکر می کنی چی گفتم؟ همین هارو دقیقا! و در نهایت کلا لینک ها و صفحات و محتوای اولیه اصلی باید SSR بشه. این میشه خلاصه این آموزش که تو دوره SEO هم چهار فصل درباره سئو تکنیکال، مفصل صحبت کردم. همین آقای مارتین اسپیلیت میگه موج اول crawl بدون جاوااسکریپت هست. موج های بعدی کراول، ممکنه با JS باشه. و میگفت اگه SSR نباشی دیر کراول و ایندکس میکنیم! در حالی که اصلا کراول و ایندکس نمیکنه! و خیلی باید خوش شانس باشی و بودجه خزش یا Crawl Budget بهینه داشته باشی که ایندکس کنه. که همین هم بعد از چند سال عقب گرد کرد و گفت کلا باید SSR باشه!

dynamic rendering not recommended

در جریان باش داینامیک رندرینگ که گوگل به عنوان راه حل خوب پیشنهادی به خصوص در ویدیو های مارتین اسپیلیت سال 2019 روش مانور میداد، تبدیل شد به اینکه توصیه نمیکنم و راه حل دراز مدت نیست! باور نمی کنی؟ Dynamic rendering as a workaround رو ببین! همون لینکی هست که توی آموزش Dynamic Rendering منسوخ شد گفتم. اینجا هم نمونه دیگه ای از اینکه گوگل نمی خواد در ادبیاتش ضعف نشون بده رو گفتم! به جای نکن! میگه توصیه نمی کنم! به جای اینکه بگه دیگه کاری که 2019 توصیه کرده بودم، برگرد به همون روال گذشته، میگه راه حل دراز مدت نیست و رنگ رو قرمز میکنه که تو عکس و لینک بالا می تونی ببینی.