Я последовал этому ( http://www.electrictoolbox.com/force-reload-css-javascript-unique-filenames/ ) учебнику, чтобы принудительно обновить кеширование, динамически назвав мои файлы css и javascript, добавив время, измененное на имя файла. Это для использования во время разработки, поскольку у меня возникают проблемы с моим хостингом, кэширующим мои файловые серверы. Я подтвердил, что mod_rewrite включен, и htaccess читается, я определенно на сервере Apache. У меня нет ошибок в моем скрипте, но когда я проверяю источник с помощью инструментов разработчика, имя файла не изменилось. Страница тестирования: www.diysoakwells.com.au/cart2.php.
RewriteEngine On RewriteCond %{HTTP_HOST} ^diysoakwells.com.au$ RewriteRule (.*) http://www.diysoakwells.com.au/$1 [R=301,L] RewriteRule ^(css|js)/(.*)\.[0-9]+\.(.*)$ /$1/$2.$3 [L] <IfModule mod_deflate.c> SetOutputFilter DEFLATE # Don't compress SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #Dealing with proxy servers <IfModule mod_headers.c> Header append Vary User-Agent </IfModule> </IfModule> <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch>
PHP
<link rel="stylesheet" type="text/css" href="/css/styles2.1<?php echo filemtime('/css/styles2.1.css'); ?>.css" /> <script language="javascript" src="/js/simpleCart_verify<?php echo filemtime('/js/simpleCart_verify.js'); ?>.js"></script>
Я пробовал решение в комментариях, но все это выглядит хорошо для меня, есть ли у кого-нибудь предложения? Благодарю.
Я думаю, вы делаете это излишне сложным. Вместо изменения имени файла вы можете добавить переменную запроса. Это также приведет к перезагрузке и не потребует перезаписи имен ваших активов:
<link rel="stylesheet" type="text/css" href="/css/styles2.1.css?ts=<?php echo filemtime('/path/to/css/styles2.1.css'); ?>" /> // etc.
И пока вы отправляете одну и ту же переменную запроса, результат будет также кэшироваться.
Во-первых, вам нужно добавить ?t=
после пути к файлу, чтобы ваше время было добавлено как запрос по URL-адресу.
Во-вторых, путь, вызываемый в функции filemtime
выглядит как абсолютный путь к файлу в вашей файловой системе. Используйте file_exists()
чтобы убедиться, что /css/styles2.1.css
действительно существует.