it-swarm.asia

لا mod_expires أو mod_headers في Apache ، كيف يمكنني تخزين ملفات الصور / js / css؟

العنوان يقول كل شيء ، ليس لدينا سيطرة على بيئة الخادم الخاصة بنا وعلى الرغم من أننا يمكن أن نطلب منهم إعادة ترجمة Apache لنا لن يحدث ذلك بين عشية وضحاها.

هل هناك أي شيء يمكننا القيام به هو أن هذه الوحدات (mod_expires ، mod_headers) غير متوفرة للمساعدة في تحديد محتوى معين (الصور ، js ، css) يجب أن يتم تخزينها مؤقتًا أو هل نحن محظوظون؟

6
Chris

أحد الخيارات هو إرسالها من خلال PHP برنامج نصي والحصول على هذا البرنامج النصي لرؤوس التخزين المؤقت لك. ينجز الشيء نفسه مع القليل من الحمل الإضافي فقط لأنه يجب أن يكون PHP يخدم الصورة كوكيل.

مثال:

HTML:
<img src="/images/img.php?img=someimage.png">

PHP:
<?php
    $filename = $_GET['img'];
    $file = '/path/to/file/' . $filename;

    // Do verification that the file exists, they're not after any secure 
    // files, etc. Not shown here   

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header("Last-Modified: " . date( "D, j M Y H:i:s", strtotime("- 1 month")));
    header("Expires: Thu, 20 Sep 2012 05:00:00 GMT");
    header("Cache-Control: max-age=2692000, public"); 
    header("Pragma: cache"); 
    ob_clean();
    flush();
    readfile($file);
    exit;

?>
6
John Conde