PDA

View Full Version : سوال: تغییر اندازه عکس توسط کلاس تاثیر بر روی سرعت لود صفحات خواهد گذاشت؟



persian_farvahar
جمعه 21 مرداد 1390, 11:49 صبح
دوستان همونطور که میدونین میشه هنگام ذخیزه تصاویر در هاست اونها رو به اندازه دلخواه با php تغییر اندازه داد و سپس ذخیزه کرد و برای نمایش آماده کرد
و یا توسط html هنگام لود تصاویر از دیتابیس اونها رو تغییر اندازه داد و نشون داد
میخوام بدونم اگر تصویر قبل از دخیره شدن روی هاست تغییر اندازه داده بشه و دیگه توسط html تغییر اندازه داده نشه تو اجرای صفحه تاثیر زیادی داره؟یا نه؟!

سوال دومم هم باز به همین بهینه شدن مزبوط میشه
فرض کنید در سایتی در قسمت توضیحات محصول یک سایز از تصویر کالا نشون داده میشه و در قسمت معرفی محصول تصویری با سایز بزرگتر
به نظر شما بهتره که واسه قسمت توضیحات تغییر سایز هنگام ذخیره توسط php انجام بشه یا اینکه همون سایزی که برای معرفی محصول قرار داده شده رو با html تغییر سایز داده و نشون بدیم(این قسمت سوال هم به قسمت قبل ربط داره)
منظورم اینه که دو سایز از یک تصویر رو در هاست ذخیره کنیم بهتره یا اینکه همون یک سایز کفایت میکنه و فضای هاست رو با دو سایز از تصویر به هدر ندیم؟؟؟

ravand
جمعه 21 مرداد 1390, 13:42 عصر
يه كار ديگه هم براي افزايش سرعت لود عكس ميشه كرد. اينكه برداري يه جدول با مثلا دو تا ستون و دو تا رديف درست كني . البته هر چي تعداد سلول ها بيشتر باشه بهتره. بعد عكس رو به چهار قسمت تقسيم كني و هر تيكه اش رو داخل يه سلول قرار بدي و border رو هم صفر كني كه ديگه معلوم نباشه اين عكس چند تيكه است. اينطوري سرعت لودت هم بيشتر ميشه.
اينطوري خوبه؟

persian_farvahar
جمعه 21 مرداد 1390, 15:01 عصر
يه كار ديگه هم براي افزايش سرعت لود عكس ميشه كرد. اينكه برداري يه جدول با مثلا دو تا ستون و دو تا رديف درست كني . البته هر چي تعداد سلول ها بيشتر باشه بهتره. بعد عكس رو به چهار قسمت تقسيم كني و هر تيكه اش رو داخل يه سلول قرار بدي و border رو هم صفر كني كه ديگه معلوم نباشه اين عكس چند تيكه است. اينطوري سرعت لودت هم بيشتر ميشه.
اينطوري خوبه؟فکر میکنم این دیگه اضافه کاری باشه
اینجوری تعداد درخواست ها از سرور زیاد میشه

eshpilen
جمعه 21 مرداد 1390, 15:17 عصر
اگر تعداد عکسهای موجود در یک صفحه زیاد باشه یا ترافیک سایت شما خیلی زیاد باشه، تغییر سایز تصویر بوسیلهء PHP میتونه تاثیر منفی مشهود داشته باشه، وگرنه فکر نمیکنم زیاد مهم باشه.
حالا تعداد زیاد دقیقا یعنی چقدر خودم هم نمیدونم!!
بهرحال بارها گفتم و بازم میگم، مسئلهء پرفورمنس چیزی هست که اغلب باید در عمل دیده بشه. معمولا تا وقتی مشکلی دیده نمیشه دلیلی برای نگرانی و بهینه سازی هم وجود نداره.

persian_farvahar
جمعه 21 مرداد 1390, 17:31 عصر
اگر تعداد عکسهای موجود در یک صفحه زیاد باشه یا ترافیک سایت شما خیلی زیاد باشه، تغییر سایز تصویر بوسیلهء PHP میتونه تاثیر منفی مشهود داشته باشه، وگرنه فکر نمیکنم زیاد مهم باشه.
حالا تعداد زیاد دقیقا یعنی چقدر خودم هم نمیدونم!!
بهرحال بارها گفتم و بازم میگم، مسئلهء پرفورمنس چیزی هست که اغلب باید در عمل دیده بشه. معمولا تا وقتی مشکلی دیده نمیشه دلیلی برای نگرانی و بهینه سازی هم وجود نداره.
ّبینید دوست عزیز من منظورم تغییز سایز تصویر در هر بار لود شدن نیست
البته این رو هم گفتم که با html این تغییر اندازه رو انجام بدیم سرعت کمتر نمیشه!؟ که این میشه همون تغییر اندازه در هر بار لود شدن
اگه پست اول من رو با دقت خونده باشید من اشاره کردم که تصاویر به اندازه ای که قراره نمایش داده یشه در دایرکتوری ذخیره بشه و دیگه برای هر باز نمایش این تغییر اندازه صورت نگیره

mamali-mohammad
جمعه 21 مرداد 1390, 17:50 عصر
بهتره با php تغییر سایز و تغییر حجم بدی
اگه با html این کارو کنی load صفحه به شدت میره بالا

eshpilen
جمعه 21 مرداد 1390, 17:50 عصر
آهان من فکر کردم میگید On the fly با PHP اینکار رو بکنیم. مثلا با اکستنشن GD.
آخه شما گفتید «هنگام لود تصاویر از دیتابیس اونها رو تغییر اندازه داد و نشون داد» که با قضیهء تغییر اندازهء نمایشی بعد از دانلود شدن و سمت کلاینت همخوانی نداره.
بهرصورت با HTML هم میشه اما بهینه نیست. درسته در دفعات بعد میتونن کش بشن، اما اکثر منابع میگن و بی راه هم نمیگن که لود اولین بار سایت خیلی مهم هست. ضمنا کاربر ممکنه کش مرورگر رو خالی کنه. بعد تازه وقتی شما تصویر رو از دیتابیس بیرون میکشید باید هدرهای کش مناسب رو هم تنظیم کنید تا مطمئن باشید درست کش میشن (باید چک کنید ببینید درحالت عادی چطور کش میشن و آیا نیاز هست خودتون تعیین کنید یا خیر).
بنظر بنده یا با PHP تغییر اندازه بدید (اگر تصاویر کم هستن و تصاویر اصلی هم زیاد بزرگ/حجیم نیستن) یا بقول خودتون یه نسخهء Thumbnail از هر تصویر روی سرور ذخیره کنید.
ضمنا Scale کردن تصاویر با HTML بنظرم مقداری پرفورمنس سمت کلاینت رو کم میکنه. بنده این مسئله رو موقعی که عکس رو بزرگتر از سایز واقعی خودش در بکگراند نشون میدیدم دیدم، اما درمورد کوچکتر کردن نمیدونم تا چه حد هست. شاید روی سیستمهای قوی نشون نده، اما بهرحال هست و روی سیستمهای متوسط تاثیر داره و بهتره کاری رو که سمت سرور باید انجام بشه همونجا انجام بدید؛ بخصوص که سایت دینامیک هست و ابزارش دم دستتونه و بهرحال کدنویسی مفصل سمت سرور دارید.
به کلاینت تصویری رو بدید که با سایز مورد نیازش هست.
درمورد قضایای سمت سرور تصمیمگیری سخت تر هست ولی فکر میکنم بهتر باشه تصاویر آپلودی رو به حداکثر اندازهء مورد نیاز تغییر بدید و بعد ذخیره کنید. مگر اینکه رزولیشن بالای تصاویر ارزشمند باشه و یا ممکنه بعدا بهشون نیاز پیدا کنید. خلاصه تصمیم با خودتونه.

persian_farvahar
جمعه 21 مرداد 1390, 18:15 عصر
آهان من فکر کردم میگید On the fly با PHP اینکار رو بکنیم. مثلا با اکستنشن GD.
آخه شما گفتید «هنگام لود تصاویر از دیتابیس اونها رو تغییر اندازه داد و نشون داد» که با قضیهء تغییر اندازهء نمایشی بعد از دانلود شدن و سمت کلاینت همخوانی نداره.
بهرصورت با HTML هم میشه اما بهینه نیست. درسته در دفعات بعد میتونن کش بشن، اما اکثر منابع میگن و بی راه هم نمیگن که لود اولین بار سایت خیلی مهم هست. ضمنا کاربر ممکنه کش مرورگر رو خالی کنه. بعد تازه وقتی شما تصویر رو از دیتابیس بیرون میکشید باید هدرهای کش مناسب رو هم تنظیم کنید تا مطمئن باشید درست کش میشن (باید چک کنید ببینید درحالت عادی چطور کش میشن و آیا نیاز هست خودتون تعیین کنید یا خیر).
بنظر بنده یا با PHP تغییر اندازه بدید (اگر تصاویر کم هستن و تصاویر اصلی هم زیاد بزرگ/حجیم نیستن) یا بقول خودتون یه نسخهء Thumbnail از هر تصویر روی سرور ذخیره کنید.
ضمنا Scale کردن تصاویر با HTML بنظرم مقداری پرفورمنس سمت کلاینت رو کم میکنه. بنده این مسئله رو موقعی که عکس رو بزرگتر از سایز واقعی خودش در بکگراند نشون میدیدم دیدم، اما درمورد کوچکتر کردن نمیدونم تا چه حد هست. شاید روی سیستمهای قوی نشون نده، اما بهرحال هست و روی سیستمهای متوسط تاثیر داره و بهتره کاری رو که سمت سرور باید انجام بشه همونجا انجام بدید؛ بخصوص که سایت دینامیک هست و ابزارش دم دستتونه و بهرحال کدنویسی مفصل سمت سرور دارید.
به کلاینت تصویری رو بدید که با سایز مورد نیازش هست.

:D ولی جمله کامل من این بود :

و یا توسط html هنگام لود تصاویر از دیتابیس اونها رو تغییر اندازه داد و نشون داد :بوس:


درمورد قضایای سمت سرور تصمیمگیری سخت تر هست ولی فکر میکنم بهتر باشه تصاویر آپلودی رو به حداکثر اندازهء مورد نیاز تغییر بدید و بعد ذخیره کنید. مگر اینکه رزولیشن بالای تصاویر ارزشمند باشه و یا ممکنه بعدا بهشون نیاز پیدا کنید. خلاصه تصمیم با خودتونه.خوب من الان یه مشورت از شما میخوام
ببینید فرض کنید که تصویر یک محصول قراره در 3 مکان نشون داده بشه
1-معرفی محصول (که باید اندازه تصویر متوسط باشه)
2-توضیحات محصول (که باید تصویر به اندازهی بزرگ باشه که جزئیات محصول هم در تصویر نمایان باشه)
3-سبد خرید (به اندازه ای کوچک باشه که فقط نمایان محصول باشه)

با این تفاسیر من باید 3 سایز از این تصویر رو در هنگام ذخیزه سازی ذخیره کنم
که فکر میکنم برای مورد سوم نیاز نباشه و بهینه نیست که حجم هاست هدر داده بشه
و با همون تغییر سایر توسط HTML بهینه تر باشه؛ چون معمولاً در سبد خرید تعداد محصول زیادی برای اکثر کاربرها مشاده نمیشه
نظر شما چیه؟؟؟

+++++++++++++++++++
جناب eshpilen در مورد هدر های کش شد اشاره داشتید ، ممنون میشم یه توضیحاتی در این مورد هم بدید یا اگه میشه لینک منبعی برای این موضوع بدید

eshpilen
جمعه 21 مرداد 1390, 19:01 عصر
و یا توسط html هنگام لود تصاویر از دیتابیس اونها رو تغییر اندازه داد و نشون داد دو بخش جملهء شما با هم سازگاری ندارن. هنگام لود از دیتابیس چه ربطی به HTML داره؟ هنگام لود از دیتابیس یعنی سمت سرور.


که فکر میکنم برای مورد سوم نیاز نباشه و بهینه نیست که حجم هاست هدر داده بشه
و با همون تغییر سایر توسط HTML بهینه تر باشه؛ چون معمولاً در سبد خرید تعداد محصول زیادی برای اکثر کاربرها مشاده نمیشه
نظر شما چیه؟؟؟بنظر منطقی میاد.
بخصوص که دیدن تصویر سوم در سبد خرید یعنی اینکه به احتمال زیاد قبلا کاربر تصویر سایز متوسطش رو مشاهده کرده (معرفی محصول). چون اول باید اون صفحه رو دیده باشه که بعد مراحل بعدی رو رفته و به سبد خرید اضافه کرده. بنابراین میتونید از اینکه اون تصویر سایز متوسط در مرورگر کش شده استفاده کنید و همون تصویر رو به تگ img در سبد خرید اختصاص بدید.
البته بهرحال در عمل پارامترها و احتمالات پیشبینی نشده وجود دارن و بنابراین باید این قضیه رو تحت نظر داشته باشید و مطمئن بشید درست کار میکنه.

البته بنظر بنده سبد خرید تصویر نداشته باشه زیاد هم مهم نیست و شاید بهتر هم باشه. همون اسم و مشخصات و نهایتا آیکونی چیزی برای انواع مختلف محصولات مثل سخت افزار و نرم افزار و غیره کفایت میکنه. ضمنا تصویر اگر خیلی کوچک باشه که چیز زیادی ازش معلوم نیست، اگر بزرگتر باشه هم ریخت سبد خرید رو بهم میزنه!


جناب eshpilen در مورد هدر های کش شد اشاره داشتید ، ممنون میشم یه توضیحاتی در این مورد هم بدید یا اگه میشه لینک منبعی برای این موضوع بدید تصویر اگر روی هارد باشه شما میتونید با استفاده از دستورات htaccess زمان کش شدن اونها رو افزایش بدید. تاپیک در این مورد با کد و بحث کافی در همین تالار هست و جستجو کنید پیدا میکنید.
اگر تصویر توسط PHP ارسال میشه (مثلا چون از دیتابیس واکشی میشه)، اونوقت باید هدرهای کش رو خودتون ارسال کنید. مثلا هدر Max-age مشخص میکنه مرورگر میتونه تا چند وقت تصویر رو کش کنه.
فکر نمیکنم نیازی به توضیحات و جزییات باشه الان. چون بنده هم حضور ذهن ندارم و باید تست و تحقیق بیشتری بکنم برای جزییات و کدهای کاملش، و شما هم خودتون یک گوگل بکنید باید بتونید براحتی نمونه هاش رو پیدا کنید. حالا اگر بعد بازم مشکل داشتید بگید اگر وقت کردیم ما هم کمک میکنم.