منبع اصلی نوشتار زیر در این لینک قرار دارد

استفاده از github به عنوان CDN

یکی از مسایلی که خیلی وب سایتها (خصوصا در ترافیکهای بالاتر) با اون درگیر هستند، محتوای استاتیک سایته. مثلا فایلهای جاوااسکریپت، CSS و شاید تا حد زیادی عکسها. داشتن یک CDN، یک ایده‌آله ولی هزینه هاش نسبتا بالا هستند و برای سایتهای شخصی نمیصرفه.
بعد از مدتی سروکله زدن با این مساله، یک راه حل نسبتا ساده پیدا کردم، اونهم استفاده از github برای اینکاره.
github رو الان همه میشناسن. به نحوی یک شبکه اجتماعی محسوب میشه، نسل جدیدی از فضاهای اشتراک کد با قابلیتهای بالا. اما چطور میشه از این سایت به عنوان CDN استفاده کرد؟
تقریبا کار ساده‌ایه. اگر عضو نیستید، عضو بشید. یک رپوزیتوری جدید ایجاد کنید. راهنمای خود github کامل و گویاست در این موارد.
بعد از این نوبت میرسه به استفاده از این رپو. خیلی ساده این رپو رو روی سیستم خودتون کلون کنید. مثلا من یک رپوی جدید ساختم به اسم cybits، با فرض اینکه خالیه و هنوز هیچ چیزی توش نیست اینطوری استفاده از اونرو شروع میکنم :

mkdir cybits
  cd cybits
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin https://github.com/fzerorubigd/cybits.git
  git push -u origin master

البته من ترجیح میدم که از https استفاده نکنم که هربار مجبور به زدن نام کاربری و رمز نباشم. خوب، با اینکار شما یک رپوزیتوری خالی ساختید، میتونید توی فایل README هم توضیحی بنویسید اگه لازمه. خوب میرسیم به قسمت اصلی کار.
قابلیتی توسط github ارایه میشه که شما میتونید یک سری فایل رو به صورت استاتیک سرو کنید. برای اینکار کافیه که برنچی به اسم gh-pages بسازید. فراموش نکنید به جای اسم من و اسم رپوی من، نام کاربری و رپوی خودتون رو بگذارید. اینطوری :

cd cybits
git checkout --orphan gh-pages
git rm -rf .
# rm '.gitignore'

خوب حالا فایلهایی که میخواید رو توی این شاخه کپی کنید. منظورم فایلهای استاتیک مورد نظرتونه، فایلهای CSS و جاوااسکریپت و هر محتوایی که لازم دارید. مثلا من فایل jQuery و فایلهای مربوط به bootstrap رو توی رپوی خودم کپی کردم. (منظور توی پوشه cybits ـه) برای رضای خدا، یک فایل index.html هم بسازید بد نیست.

خوب باقیش که دیگه میشه دستورات git :

echo "My GitHub Page" > index.html
git add .
git commit -m "Create gh-pages"
git push origin gh-pages

برای بار اول دست کم ۱۰ دقیقه طول میکشه و بعدش براتون یک ایمیل میاد که آماده به کاره. حالا آدرسش کجاست؟ برای من با نام کاربری fzerorubigd و اسم رپوی cybits آدرس میشه این :


http://fzerorubigd.github.com/cybits/

مثلا برای فایل bootstrap.css – که من کپیش کردم توی پوشه css – آدرس اینه :


http://fzerorubigd.github.com/cybits/css/bootstrap.css

مزایا و معایب
چند تا مزیت هست. (علاوه بر بندواید) اول اینکه بودن محتوای استاتیک در دامنه‌ای دیگر باعث سرعت بیشتر بارگزاری سایت شماست. چرا که همه بروزر ها در هر زمان فقط دو فایل از یک هاست را دانلود میکنند و مثلا وقتی در حال دانلود فایلهای CSS و جاوااسکریپت هستند (دو تا با هم از هر نوعی) باقی فایلها مثلا عکسها منتظر میمانند. با این روش، چون لود فایلهای استاتیک از جای دیگریست، اسلاتهای مورد استفاده برای دانلود از سایت شما بیخود پر نمیشوند.
دومین مزیت این است که این دامنه کوکی ندارد، و خالی بودن این دامنه از کوکی مزیت محسوب میشود (قبلا درباره Cooke free domain نوشتم )
اما در مورد اینکه واقعا github به صورت توزیع شده عمل کند و فایلهای شما برای ویزیتورها از مکانی نزدیک به خودشان سرو شود هیچ اطلاعی ندارم :))

اما عیب. متاسفانه تاریخ انقضای این فایلها در github برای یک روز تعیین شده. زمان زیاد مناسبی نیست و من زمانی در حد یک سال و … را ترجیح میدهم :)

– نکته اینجاست که شاید فایلهای CSS زیاد حجمی نداشته باشند، ولی فایلهای فونت رو توصیه میکنم ببرید روی github :)))



برچسب ها : , , , , , ,