mahmoud mahmoud
4 سال پیش توسط mahmoud mahmoud مطرح شد
8 پاسخ

انتقال فایل های استاتیک به یک ساب دامین

با سلام. من میخوام مثل سایت راکت فایل های static به یک subdomain منتقل کنم... یا چطور میشه به یک cdn منتقل کرد؟؟
static.example.com/logo.jpg
static.example.com/app.css
و...

ممنون میشم راهنمایی کنید... با تشکر از همه دوستان

@hesammousavi
@ali.bayat
@mhyeganeh


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
2

@sayyed.mahmoud96

سلام

نیمدونم از فلسفه پشت این کار تا چه مطلع هستید. فلذا یک توضیح مختصر عرض میکنم:
هر ریکوئستی که از سمت کاربر به سمت سرور میره با خودش مقداری اطلاعات شامل کوکی ها و هدرها و ... رو حمل میکنه. cookie ها هم فواید بسیار زیادی دارند و باعث میشه بتونیم تشخیص بدیم که این درخواست مربوط به کدوم کاربر هست. از اون ها هم برای بحث احراز هویت و لاگین، سبد خرید و یا Tracking استفاده میشه.

تا اینجاش همه چیز خوب و عالیه. منتها در خصوص فایلهای استاتیک مثل تصاویر و فایل های css و js که معمولا هر کدومشون جداگانه نیازمند یک ریکوئست مختص خود هستند، این کوکی های خوب و دوست داشتنی اصلا به کار نمیان و فقط باعث افزایش حجم اطلاعات رد و بدل شده می شوند. (داده های پِرتی محسوب می‌شوند)

از طرفی رد و بدل شدن کوکی ها جزو تنظیمات پیش فرض هست و اگر نخواسته باشیم این اتفاق بیافته باید صریحا مشخص بشه. منتها قسمت نه چندان جالب ماجرا اینجاست که ظاهرا هر دامنه/زیردامنه فقط میتونه یک حالت براش تنظیم بشه. یعنی یا با کوکی یا بدون کوکی. و توجه داشته باشید که اگر تنظیماتتون برای دامنه اصلی یعنی مثلا example.com قرار دادید امکان اینکه برای زیر دامنه اش تنظیمات متفاوت قرار بدید وجود نداره و چاره ای نیست جز تهیه یک دامنه کلا مجزا. ولی اگر فقط برای www.example.com قرارداده باشید میتونید از زیر دامنه همون دامنه استفاده کنید.

If you set your cookies on a top-level domain (e.g. yourwebsite.com) all of your subdomains (e.g. static.yourwebsite.com) will also include the cookies that are set. Therefore, in this case, it is required that you use a separate domain name to deliver your static content if you want to use cookie-free domains. However, if you set your cookies on a www subdomain such as www.yourwebsite.com, you can create another subdomain (e.g. static.yourwebsite.com) to host all of your static files which will no longer result in any cookies being sent.

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

server {  
listen 80;  
servername static.example.com;  
root /var/www/example.com;

fastcgi_hide_header Set-Cookie;
}

توضیحات بیشتر:
https://www.digitalocean.com/community/questions/how-to-set-up-nginx-cookie-free-headers

در پروژه لاراول هم به نظرم تمیزترین کار این باشه که در فایل config/filesystem.php یک disk جدید تعریف کنید برای این دامنه و از این به بعد همون طوری که جناب بیات اشاره کردند رفرنس تصاویر و ... رو با استفاده از متدهای Storage بصورت کامل و بر اساس دامنه جدید تنظیم کنید. مثلا اینجوری :

Storage::disk('statics')->url('images/file.jpg');

تا بعد از کامپایل تبدیل بشه به مثلا اینجوری:

https://statics.example.com/images/file.jpg

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

سوالت کمی گنگه
خوب منتقل کنید.. مشکل چیه؟


mahmoud mahmoud
تخصص : Developer
@sayyed.mahmoud96 4 سال پیش مطرح شد
0

توی سایت gtmetrix.com یکی از پارامتر های بخش Use cookie-free domains هست...

برای حل این مشکل جستجو کردم در stackoverflow این لینک پیدا کردم: لینک
و این راهنمایی کرده بود:

Serve static content from a different domain to avoid unnecessary
cookie traffic. When the browser requests a static image and sends
cookies with the request, the server ignores the cookies. These
cookies are unnecessary network traffic.

Move all your static content on a different domain, where no cookies are set.
Move your static content on a different sub domain and set all the cookies to the www subdomain.

به عبارتی سوالم بهتر بپرسم: چطوری میشه فایل های static از یک subdomain دیگه فراخوانی کرد؟


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

@sayyed.mahmoud96

ما تو تگ های html اکثرا به شکل relative آدرس دهی میکنیم:

<img src="/images/file.jpg" >

ولی همیشه میشه به شکل کامل آدرس رو هم داد:

<img src="http://subdomain.example.com/images/file.jpg" >

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

@coaradsupp

اگر اشتباه نکنم اون تاپیک مربوط به استفاده از استوریج روی یه ساب دامینه..


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
0

@ali.bayat

کاری که ایشون انجام دادن رو من هم توی سایت gtmetrix انجام دادم و باید تصاویر و است ها رو انگار از ساب دامنه میخوند


mahmoud mahmoud
تخصص : Developer
@sayyed.mahmoud96 4 سال پیش مطرح شد
0

بله جناب @coaradsupp منظور من دقیقا همین هست... میخوام این پارامتر برای gtmetrix اوکی کنم که فایل های استاتیک از subdomain بیاد...


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
2

@sayyed.mahmoud96

سلام

نیمدونم از فلسفه پشت این کار تا چه مطلع هستید. فلذا یک توضیح مختصر عرض میکنم:
هر ریکوئستی که از سمت کاربر به سمت سرور میره با خودش مقداری اطلاعات شامل کوکی ها و هدرها و ... رو حمل میکنه. cookie ها هم فواید بسیار زیادی دارند و باعث میشه بتونیم تشخیص بدیم که این درخواست مربوط به کدوم کاربر هست. از اون ها هم برای بحث احراز هویت و لاگین، سبد خرید و یا Tracking استفاده میشه.

تا اینجاش همه چیز خوب و عالیه. منتها در خصوص فایلهای استاتیک مثل تصاویر و فایل های css و js که معمولا هر کدومشون جداگانه نیازمند یک ریکوئست مختص خود هستند، این کوکی های خوب و دوست داشتنی اصلا به کار نمیان و فقط باعث افزایش حجم اطلاعات رد و بدل شده می شوند. (داده های پِرتی محسوب می‌شوند)

از طرفی رد و بدل شدن کوکی ها جزو تنظیمات پیش فرض هست و اگر نخواسته باشیم این اتفاق بیافته باید صریحا مشخص بشه. منتها قسمت نه چندان جالب ماجرا اینجاست که ظاهرا هر دامنه/زیردامنه فقط میتونه یک حالت براش تنظیم بشه. یعنی یا با کوکی یا بدون کوکی. و توجه داشته باشید که اگر تنظیماتتون برای دامنه اصلی یعنی مثلا example.com قرار دادید امکان اینکه برای زیر دامنه اش تنظیمات متفاوت قرار بدید وجود نداره و چاره ای نیست جز تهیه یک دامنه کلا مجزا. ولی اگر فقط برای www.example.com قرارداده باشید میتونید از زیر دامنه همون دامنه استفاده کنید.

If you set your cookies on a top-level domain (e.g. yourwebsite.com) all of your subdomains (e.g. static.yourwebsite.com) will also include the cookies that are set. Therefore, in this case, it is required that you use a separate domain name to deliver your static content if you want to use cookie-free domains. However, if you set your cookies on a www subdomain such as www.yourwebsite.com, you can create another subdomain (e.g. static.yourwebsite.com) to host all of your static files which will no longer result in any cookies being sent.

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

server {  
listen 80;  
servername static.example.com;  
root /var/www/example.com;

fastcgi_hide_header Set-Cookie;
}

توضیحات بیشتر:
https://www.digitalocean.com/community/questions/how-to-set-up-nginx-cookie-free-headers

در پروژه لاراول هم به نظرم تمیزترین کار این باشه که در فایل config/filesystem.php یک disk جدید تعریف کنید برای این دامنه و از این به بعد همون طوری که جناب بیات اشاره کردند رفرنس تصاویر و ... رو با استفاده از متدهای Storage بصورت کامل و بر اساس دامنه جدید تنظیم کنید. مثلا اینجوری :

Storage::disk('statics')->url('images/file.jpg');

تا بعد از کامپایل تبدیل بشه به مثلا اینجوری:

https://statics.example.com/images/file.jpg

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام