кэширование — кеширование динамического JavaScript, созданного переполнением стека

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

<?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-файлы на сервере.

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

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

0

Решение

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

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

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

1

Другие решения

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector