Я знаю, что этот вопрос немного стар, но я предложил бы использовать некоторый хеш cachebraking в URL JavaScript. Это работает отлично в производстве, а также во время разработки, потому что у Вас могут быть и бесконечные времена кэша и мгновенные обновления, когда изменения происходят.
Позволяет, предполагают, что у Вас есть файл /js/script.min.js JavaScript, но в ссылке html/php файл Вы не используете фактический путь, но:
<script src="/js/script.<?php echo md5(filemtime('/js/script.min.js')); ?>.min.js"></script>
Поэтому каждый раз файл изменяется, браузер получает другой URL, который в свою очередь означает, что не может кэшироваться, быть этим локально или на любом промежутке прокси.
Для создания этой работы Вам нужен nginx для перезаписи любого запроса к/js/script. [0-9a-f] {32} .min.js к исходному имени файла. В моем случае я использую следующую директиву (для css также):
location ~* \.(css|js)$ {
expires max;
add_header Pragma public;
etag off;
add_header Cache-Control "public";
add_header Last-Modified "";
rewrite "^/(.*)\/(style|script)\.min\.([\d\w]{32})\.(js|css)$" /$1/$2.min.$4 break;
}
я предположил бы, что вызов filemtime даже не требует доступа к диску на сервере, как это должно быть в кэше файла Linux. Если у Вас есть сомнения или статические файлы HTML, можно также использовать фиксированное случайное значение (или возрастающий или довольный хеш), который обновляется, когда JavaScript / css препроцессор закончил или позволил одному из рычагов мерзавца изменить его.
В теории Вы могли также использовать cachebreaker в качестве фиктивного параметра (как/js/script.min.js? cachebreak=0123456789abcfef), но тогда файл не кэшируется, по крайней мере, некоторыми прокси из-за" ? ".