например, <script type="text/javascript" src="assets/scripts/somescript.php"></script>
будет ли мой браузер по-прежнему кэшировать это, не устанавливая этот кеш метатегов заголовков сценариев, чтобы он должен был revalidate?
Некоторые браузеры более агрессивны с кешированием по умолчанию, чем другие. Тем не менее, есть заголовки управления кешем, которые вы можете отправить, чтобы указать, когда перезагружать код.
header("Expires: " . date("r", time() + ( 60 * 60 * 24 * 7 * 1 ) ) ); // Expires in 1 week header("Content-Type: application/x-javascript");
Является фрагментом кода, который, как мне известно, используется.
Вы можете использовать более причудливые вещи, такие как заголовки If-Not-Modified и ETags, но время истечения – единственные, которые устраняют дополнительные серверные вызовы.
Если вы отправляете Content-type: text/javascript; charset="your_charset"
Content-type: text/javascript; charset="your_charset"
браузер распознает ваш PHP-скрипт как действительный ресурс Javascript и будет обрабатывать его, как и любой другой Javascript. Вы можете контролировать поведение кэширования браузера, выбирая правильные заголовки в вашем скрипте PHP, используя header()
.
Один трюк заключается в том, чтобы написать свой тег скрипта с постоянно меняющейся верификацией. Ваш основной PHP мог бы написать следующее, которое меняется каждый день:
<script type="text/javascript" src="assets/scripts/somescript.php?date=20081118"></script>
Запросы будут игнорироваться somescript.php, но браузер будет обрабатывать URL как новый каждый раз и перезагружать скрипт.