Я использую плагин W3 Total Cache, плагин настроен для работы с CDN на базе AWS (S3+CloudFront):
- Минимизировать файлы CSS и JS
- Отправьте их на AWS S3
- S3 отправляет их в CloudFront AWS
Описанный выше процесс работает нормально:
style.css
минимизируется как18704.css
иscript.js
минимизируется как39633.js
.Автоматическая загрузка в CDN работает, затем я могу вручную получить доступ к файлам, введя URL-адреса в адресную строку браузера:
- S3 URL e.g.
https://<instance>.amazonaws.com/wordpress/wp-content/cache/minify/1/39633.js
gets found and - URL-адрес CloudFront, например.
https://<distribution_id>.cloudfront.net/wp-content/cache/minify/1/39633.js
найден
- S3 URL e.g.
Автоматическая перезапись URL-адреса подключаемым модулем (при загрузке веб-страницы), скорее всего, приведет к сбою, поскольку заголовок HTML по-прежнему содержит исходное имя хоста в URL-адресе:
<script type="text/javascript" src="https://www.example.com/wp-content/cache/minify/1/39633.js"></script>
<link rel="stylesheet" type="text/css" href="https://www.example.com/wp-content/cache/minify/1/18704.css" media="all" />
Почему подключаемый модуль W3 Total Cache не перезаписывает URL-адреса с CloudFront в качестве хоста?
Сетевая консоль Chrome: минимизированные файлы извлекаются с исходного хоста, а не из CDN.
ВОЗМОЖНОЕ РЕШЕНИЕ:
Это похоже на обходной путь, но он работает. Указав RewriteRules в файле .htaccess
, я заставляю сайт загружать файлы .css
и .js
через CDN.
RewriteCond %{REQUEST_URI} \.(css|js)$
RewriteRule ^ https://<distribution_id>.cloudfront.net%{REQUEST_URI} [R,L]
Но есть еще один файл, который сопротивляется перенаправлению (18704.css
). У меня отключен кеш браузера (даже я удалил кеш браузера вручную), и файл по-прежнему сопротивляется загрузке из кеша. Я думаю, что это не имеет никакого отношения к кэшированию браузера, сетевая консоль Chrome говорит, что файл не загружен из кэша.