PDA

View Full Version : لود شدن عکس در هربار لود شدن صفحه



mehdi4467
یک شنبه 30 مرداد 1390, 13:32 عصر
سلام
من می خواهم هر بار که صفحه مورد نظر لود میشه عکس را هم دوباره لود کنه. چون الان وقتی صفحه لود میشه عکس اگر تغییر کرده باشه همون عکس قبلی رو نمایش میده.

mkvisual
یک شنبه 30 مرداد 1390, 13:49 عصر
از سیستم مدیریت محتوایی مثل PHPBB استفاده میکنید ؟
در کل کش مرورگر رو پاک کنید فکر کنم درست شه ...

Unique
یک شنبه 30 مرداد 1390, 14:48 عصر
سلام

سوال شما خیلی ارتباطی با php نداره ! کلا browser ها از جمله IE و Firefox و غیره برای اینکه لازم نباشه هر بار که صفحه Refresh میشه اطلاعات را Load کنند. از Cache استفاده می کنند. این کار هم برای شما و هم کاربر خوبه چون هر دو شما از پهنای باند کمتری استفاده می کنید.
قائدتا شما میخواهین که خودتون بتونین آخرین تغییر را همیشه ببینید به عنوان یک Developer ، شما در هر Browser می تونید با زدن Ctrl + F5 از Browser بخواهین که Cache را جایگزین کنه و آخرین تغییرات را ببینین. توی IE هم در قسمت Tools>Internet Options>Browser History>Settings با انتخاب
Everytime I Visit The Webpage از IE بخواهین هیچوقت از Cache استفاده نکنه ! البته من Ctrl-F5 را توصیه می کنم.

اول حرفم گفتم خیلی به php ربط نداره و کاربر تصمیم گیرنده است اما با دستکاری Header و Cache-Control و E-Tag میشه Browser را مجبور به دانلود هر بار عکس و دیگر مطالب کرد.

mehdi4467
یک شنبه 30 مرداد 1390, 16:34 عصر
سلام
ممنون از پاسختون - در مورد ریفرش صفحه و اینکه از کلید CTRL-F5 استفاده بشه مطلعم. منظور من همان قسمت آخر است. ببینید من در هر صفحه بنا بر اطلاعات همون صفحه یک نمودار می سازم که این نمودار نهایتا به شکل عکس می شود و در صفحه نمایش داده می شود. حالا فرض کنید یک یوزر وارد یک صفحه می شود و نمودار همان صفحه را می بیند. بعد از اون وارد یک صفحه دیگه میشه و قاعدتا نمودار صفحه جدید را باید ببیند ولی چون عکس همان آدرس و نام قبلی رو دارد بنابراین مرورگر عکس قبلی را نشون میده.

Unique
یک شنبه 30 مرداد 1390, 19:59 عصر
ببین ، اگه شما داری یک نمودار را نمایش میدی و نمودار را خودتون با استفاده از php می کشین میتونی بجای اینکه نمودار را به نام یک فایل روی دیسک save کنی و مسیر فایل مثلا jpg را بدی ، اتوماتیک با header مناسب یک image و توابع مربوطه بفرستی به browser اینطوری browser نمیتونه عکس را cache کنه ! اگه هم داری از یک component استفاده میکنی که عکس را توی یک مسیر مشخص کپی میکنه با فایل php زیر که مسیرش را توی src عکست باید بگذاری عکس را نشون بده !


<?php
$my_image = imagecreatefromjpeg($target_file);
header("Content-type: image/jpeg");
imagejpeg($my_image);
imagedestroy($my_image);
?>

mehdi4467
یک شنبه 30 مرداد 1390, 21:39 عصر
ممنون از پاسختون.
من دارم این عکس رو از کامپوننت libechart می گیرم. در خط آخر پس از اجرای دستور
$chart->render("demo1.png"); با خط زیر عکس رو نمایش می دهم:

<img src="demo1.png" style="border: 1px solid gray;"/>
اما نتونستم با روش شما نتیجه بگیرم. اگرممکن است با خطوطی که گفتم یک مثال بزنید.

با تشکر

Unique
یک شنبه 30 مرداد 1390, 23:27 عصر
این که خیلی سادست !
کدهای پستی قبلی منو بزار توی یک فایل اسمش را بگذار load_chart.php ، فقط چون دارین با png کار میکنین اینطوری میشه :


<?php
$my_image = imagecreatefrompng("demo1.png");
header("Content-Type: image/png");
imagepng($my_image);
imagedestroy($my_image);
?>

فقط مطمئن باش که مسیر فایل png را درست بدی به تابع imagecreatefrompng !!
حالا توی tag مربوط به عکست :


<img src="load_chart.php" style="border: 1px solid gray;"/>

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

binyaft
دوشنبه 31 مرداد 1390, 01:02 صبح
پوففففففففففففففف

چه کاریه آخه !

بیا آخر فایل یه رشته اضافه کن کش نکنه !


$str="img.png?time=".time()."";

mehdi4467
دوشنبه 31 مرداد 1390, 04:49 صبح
با روشی که Unique (http://barnamenevis.org/member.php?11933-Unique) مطرح کرد به جواب رسیدم.


چه کاریه آخه !

بیا آخر فایل یه رشته اضافه کن کش نکنه !

1
$str="img.png?time=".time()."";


این کدی که شما نوشتید چکار می کند؟ آخر همون فایل خودم باید اضافه کنم؟

binyaft
دوشنبه 31 مرداد 1390, 11:05 صبح
نه خیر ! به جای درگیر کردن یه اکستنشن دیگه مثل GD به اخر اسم تصویری که قرار هست نمایش داده بشه یک رشته رندوم اضافه کن ....
مثل همون تابع time

mehdi4467
دوشنبه 31 مرداد 1390, 16:32 عصر
خوب اینجوری که هربار یک عکس جدید تولید میشه. بنابراین باید بعد از یک زمان هایی عکس ها را پاک کرد.

Unique
سه شنبه 01 شهریور 1390, 13:44 عصر
نه منظورشون را متوجه نشدی !
ببین اگه بیای و زمانی که تگ img را داری echo میکنی یا توی html مینویسی ، بجای chart.png بنویسی chart.png?t=2011082010458869 که منظور از t روز و تاریخ جاری هستش ، اونوقت browser هر بار چون مقدار t عوض میشه فکر میکنه یه عکس دیگست و cache را نشون نمیده ، پس همه را با chart.png ذخیره میکنی اما با اضافه کردن query string جلوی cache را میگیری !

در مورد اینکه دوستمون گفته بود چرا GD را دخیل کنیم ! زیاد بی راه نمیگن حالا دیگه شما باید تصمیم بگیری چیکار کنی !

armsoftpc
سه شنبه 01 شهریور 1390, 17:31 عصر
به نام خدا
با سلام
به نظر من میتونن به روش زیر عمل کنند.

<?php
$m_arr_img =array ( 'exp.png', 'exp2.png', 'exp3.png')
shuffle($m_arr_img);// به اين صورت عکس ها به صورت رندم نمايش داده مي شوند
for ( $i = 0; $i < 3; $i++ )
{
echo '<td align="center"><img src="';
echo $$m_arr_img[$i];
echo '"width="200" height="200"></td>';
}
?>