سلام خدمت دوستان گرامی
یک پروژه دارم با ریکت و لارول می نویسم
تصاویر رو با استفاده از دستور زیر به dataurl تبدیل می کنم
const handleImg = (e) => {
let files = e.target.files;
let reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onloadend = () => {
setimage(reader.result);
};
};
و یک تکه کد 700-800 کارکتری دریافت می کنم و به سمت سرور (با لارول نوشتم) میفرستم
حالا همین تکه کد رو مستقیما در دیتا بیس ذخیره می کنم و دیگه به صورت تصویر در روت پروژه ذخیره نمی کنم
آیا این کار از لحاظ فنی مشکل نداره و کار درستی هست؟
دوستان اگر تجربه این کار رو دارن پاسخ بدن که آیا از نظر سئو یا امنیتی و یا آسیب دیدن فایل مشکلی ایجاد نمیشه؟
به نظر بنده اگر مشکلی نداشته باشه خیلی عالیه چون ظاهرا خیلی فضای کمتری اشغال میشه
این موضوع هم مثل خیلی موضوعات دیگه خوبی ها و بدی هایی در کنار هم داره و بسته به شرایط میتونه روش مناسب یا خیلی بدی باشه.
به صورت خلاصه شاید مهمترین وجه مثبتش، کاهش تعداد Http ریکوئست (به اندازه یک عدد به ازای هر تصویر) باشه و خوب هر چه درخواست کمتر بهتر.
اما قضیه به همین جا خلاصه نمیشه:
اولا توجه داشته باشید که از نظر حجمی طبق چندین گزارش منتشر شده بصورت میانگین 25% افزایش حجم خواهید داشت در مقایسه با نسخه فایلی!
ثانیا با اینکه پشتیبانی نسبتا خوبی از data uri ها در اکثر مرورگر ها میشه ولی بعضا محدودیت تعداد کاراکتر دارند و این یعنی شاید برای تصاویر خیلی کوچک و با کیفیت پایین مسئله ای نباشه. ولی برای تصاویر حجیم مسئله زا خواهد بود.
ثالثا نگهداری و پشتیبانی از سورس کد در حالت استفاده از DataURI چندان جالب به نظر نمیرسه.
چهارما از نظر SEO تا جایی که میدونم تصاویر در قالب DataURI ایندکس نمیشوند و در صفحه نتایج گوگل به نمایش در نخواهند آمد.
پنجما فشار خیلی بیشتری در مقایسه با حالت فایلی به دیتابیس میاد
ششما از مزایای ساز و کار Cache تصاویر در مروگر مخاطبین محروم میمانید.
و نهایتا اینکه بدلیل پردازش های اضافه ای که در بخش های مختلف لازم هست انجام بشه، فشار عملیاتی روی سرور و مرورگر مخاطبان هم افزایش پیدا میکنه.
در نهایت تصمیمش با خودتون هست که آیا با این وجود در مورد مصرف شما، مزیت هاش میچربه به معایبش یا نه... شاید در نهایت بهترین راهکار استفاده از DataURI ها برای یکسری از تصاویر کوچک خاص باشه. ولی برای همه تصاویر فکر نمیکنم ایده خوبی باشه. اگر دقت کنید از این روش بصورت گسترده هم استفاده نمیشه در فضای وب.
اطلاعات بیشتر:
https://webmasters.stackexchange.com/questions/56701/image-data-uri-and-seo
https://css-tricks.com/data-uris/
https://flaviocopes.com/data-urls/
از نظر فنی چرا
به چند دلیل که به 2 تا از مهماش اشاره میکنم:
اول که با این کار شما در پروژتون برای نمایش هر تصویر مجبور میشید که کوئری بزنید به دیتابیس
که این خودش اول کلی بار اضافه به دیتابیس و رم سرور تحمیل میکنه
و علمی نمیدونم دقیقا اما حس میکنم سرعت کمتری هم داشته باشه
و دوم اینکه شما به سرعت حجم دیتابیستون رو بالا میبرید
و وقتی پروژه بزرگ میشه، شما با یک دیتابیس حجیم طرفید که خدا نکنه مجبور به انتقالش باشید، اونجاست که میگید کاش فایلارو جدا کرده بودم از بانک اطلاعاتی ...
در نظر داشته باشید که در پروژه های بزرگ یا متوسط حتی برای کم تر شدن مصرف پهنای باند و یا منابع سرور فایل هارو در یک هاست یا سرور جداگانه در سابدومین قرار میدن.
این موضوع هم مثل خیلی موضوعات دیگه خوبی ها و بدی هایی در کنار هم داره و بسته به شرایط میتونه روش مناسب یا خیلی بدی باشه.
به صورت خلاصه شاید مهمترین وجه مثبتش، کاهش تعداد Http ریکوئست (به اندازه یک عدد به ازای هر تصویر) باشه و خوب هر چه درخواست کمتر بهتر.
اما قضیه به همین جا خلاصه نمیشه:
اولا توجه داشته باشید که از نظر حجمی طبق چندین گزارش منتشر شده بصورت میانگین 25% افزایش حجم خواهید داشت در مقایسه با نسخه فایلی!
ثانیا با اینکه پشتیبانی نسبتا خوبی از data uri ها در اکثر مرورگر ها میشه ولی بعضا محدودیت تعداد کاراکتر دارند و این یعنی شاید برای تصاویر خیلی کوچک و با کیفیت پایین مسئله ای نباشه. ولی برای تصاویر حجیم مسئله زا خواهد بود.
ثالثا نگهداری و پشتیبانی از سورس کد در حالت استفاده از DataURI چندان جالب به نظر نمیرسه.
چهارما از نظر SEO تا جایی که میدونم تصاویر در قالب DataURI ایندکس نمیشوند و در صفحه نتایج گوگل به نمایش در نخواهند آمد.
پنجما فشار خیلی بیشتری در مقایسه با حالت فایلی به دیتابیس میاد
ششما از مزایای ساز و کار Cache تصاویر در مروگر مخاطبین محروم میمانید.
و نهایتا اینکه بدلیل پردازش های اضافه ای که در بخش های مختلف لازم هست انجام بشه، فشار عملیاتی روی سرور و مرورگر مخاطبان هم افزایش پیدا میکنه.
در نهایت تصمیمش با خودتون هست که آیا با این وجود در مورد مصرف شما، مزیت هاش میچربه به معایبش یا نه... شاید در نهایت بهترین راهکار استفاده از DataURI ها برای یکسری از تصاویر کوچک خاص باشه. ولی برای همه تصاویر فکر نمیکنم ایده خوبی باشه. اگر دقت کنید از این روش بصورت گسترده هم استفاده نمیشه در فضای وب.
اطلاعات بیشتر:
https://webmasters.stackexchange.com/questions/56701/image-data-uri-and-seo
https://css-tricks.com/data-uris/
https://flaviocopes.com/data-urls/
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟