2017-02-18 45 views
0

Я использую JShrink с пользовательской функцией, чтобы объединить 8 несжатых файлов JavaScript в один сжатый (уменьшенная), как здесь:Cache динамический JavaScript генерируется PHP

<?php 
// Filename: js.php 
header('Content-type: text/javascript'); 
require_once '../JShrink.php'; 

function concatenateFiles($files) 
{ 
    $buffer = ''; 

    foreach($files as $file) { 
     $buffer .= file_get_contents(__DIR__ . '/' . $file); 
    } 

    return $buffer; 
} 

$js = concatenateFiles([ 
    'core.min.js', 
    'promise.js', 
    'welcome.js', 
    'imagesloaded.js', 
    'cropper.js', 
    'translate.js', 
    'custom.js', 
    'masonry.js', 
]); 

$output = \JShrink\Minifier::minify($js); 
echo $output; 

Тогда я называю это PHP-файл в моем индексе нижний колонтитул страницы:

<script type="text/javascript" src="<? echo $url ?>/js/js.php"></script> 

Не кэшируется.

Я изменяю свои JS-коды ежедневно, и мне не нравится сочетать их вручную, но также мне нужен способ получить эхо-код JS, кешированный, только этот код, а не все php-файлы на сервере.

Как я могу это сделать и как будет выполняться процесс очистки кэша?

Заранее спасибо.

ответ

1

В теории вам необходимо использовать заголовок («...») с правильным истечением срока. На практике это работает неправильно. Вы можете потратить свою жизнь на поиск правильных примеров «Cache-Control» и «Expires:», и ни одно из того, что вы найдете, не будет работать. Поэтому я предлагаю вам прочитать:

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching

ETags является современным решением, чтобы сообщить браузеру, когда ваш ресурс изменился - или нет.

+0

Вы сделали свой день человеком, спасибо. Я следил за запиской и нашел этот отличный ответ, надеюсь, что это поможет кому-то: http://stackoverflow.com/questions/13197479/how-to-use-etags-in-a-php-file – tinyCoder

+1

Рад это услышать :) Хорошая оптимизированная передача данных! – dkellner

0

Если файл кеша не существует или какая-либо из временных меток изменения файла позже, то кеш, визуализируйте его, а затем сохраните в кэше, затем эхо-кеш или полученный результат.