PDA

View Full Version : کنترل کش برای انتقال فایل



pswin.pooya
شنبه 27 اردیبهشت 1393, 13:09 عصر
سلام
من یکسیری از فایلها رو خودم کنترل میکنم و در صورتی که کاربر مجوز داشته باشه اونها رو در خروجی چاپ میکنم. اما حالا مشکل کش کردن دارم. چه شکی میتونم کش کردن رو برای فایلهایی که خودم توی خروجی قرارشون میدم فعال کنم؟

MMSHFE
شنبه 27 اردیبهشت 1393, 16:59 عصر
باید هدرهای مربوط به کش رو تنظیم کنید با تابع header
توی اینترنت مثال زیاده.

pswin.pooya
یک شنبه 28 اردیبهشت 1393, 07:39 صبح
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);
}
else
{
$if_modified_since = '';
}

$mtime = filemtime($file);
$gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';

if ($if_modified_since == $gmdate_mod)
{
header("HTTP/1.0 304 Not Modified");
return;
}

header("Last-Modified: $gmdate_mod");
header('Content-type: text/css');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (60*60*24*45)) . ' GMT');


من این سورس رو از stackoverflow پیدا کردم منتها مشکلش اینه که تا F5 نزدی فایلها رو آپدیت نمیکنه. با اینکه مطابق با سورس اگر تاریخ فایل تغییر کنه باید فایل هم به روز شه! مشکل این کد کجاست؟

MMSHFE
یک شنبه 28 اردیبهشت 1393, 09:43 صبح
یک ترفند ساده هم اینجا وجود داره که مرورگر رو وادار میکنه کش خودش رو نادیده بگیره. اونم اینه که بعد از اسم فایل عکس یا CSS یا JS و... که میخواین همیشه درخواست بشه و کش نشه، یک علامت سؤال و یک عدد تصادفی بگذارین. مثلاً عکس رو اینطوری تولید کنید:

echo '<img src="logo.png?' . rand() . '" />';
اینطوری بخاطر وجود ? و عوض شدن عدد (و درنتیجه کل URL) در هر بازدید مرورگر فکر میکنه یک فایل Dynamic درخواست شده و درخواست رو به سرور میفرسته و کش رو نادیده میگیره.

pswin.pooya
یک شنبه 28 اردیبهشت 1393, 12:45 عصر
\یک ترفند ساده هم اینجا وجود داره که مرورگر رو وادار میکنه کش خودش رو نادیده بگیره. اونم اینه که بعد از اسم فایل عکس یا CSS یا JS و... که میخواین همیشه درخواست بشه و کش نشه، یک علامت سؤال و یک عدد تصادفی بگذارین. مثلاً عکس رو اینطوری تولید کنید:


1

echo '<img src="logo.png?' . rand() . '" />';







اینطوری بخاطر وجود ? و عوض شدن عدد (و درنتیجه کل URL) در هر بازدید مرورگر فکر میکنه یک فایل Dynamic درخواست شده و درخواست رو به سرور میفرسته و کش رو نادیده میگیره.

من از این روش برای کپچا استفاده میکنم. (که فکر کنم سورسش هم برای شماست.‌) منتها الان مشکل من اینه که اگر فایل آپدیت شد. نباید دیگه از کش استفاده شه.

pswin.pooya
یک شنبه 28 اردیبهشت 1393, 12:46 عصر
\یک ترفند ساده هم اینجا وجود داره که مرورگر رو وادار میکنه کش خودش رو نادیده بگیره. اونم اینه که بعد از اسم فایل عکس یا CSS یا JS و... که میخواین همیشه درخواست بشه و کش نشه، یک علامت سؤال و یک عدد تصادفی بگذارین. مثلاً عکس رو اینطوری تولید کنید:


1
echo '<img src="logo.png?' . rand() . '" />';






اینطوری بخاطر وجود ? و عوض شدن عدد (و درنتیجه کل URL) در هر بازدید مرورگر فکر میکنه یک فایل Dynamic درخواست شده و درخواست رو به سرور میفرسته و کش رو نادیده میگیره.

من از این روش برای کپچا استفاده میکنم. (که فکر کنم سورسش هم برای شماست.‌) منتها الان مشکل من اینه که اگر فایل آپدیت شد. نباید دیگه از کش استفاده شه.