Если бы это было возможно, я бы не стал трогать код PhpBB, а скорее прибегнул бы к механизму перезаписи URL-адресов Apache.
В PHPBB3 большая часть статического содержимого (по размеру) находится в подкаталоге /assets/
.
So if:
- вы используете браузер с возможностью перезаписи,
- включить
.htaccess
или аналогичный
- и
mod_rewrite
или аналогичный установлен,
в файл .htaccess
можно поместить,
Redirect permanent /assets http://mycdnhoster.com/collector/phpbb3/assets
Это позволяет очень легко включать/отключать CDN и не беспокоиться об изменении кода PhpBB.
То же самое касается статических файлов «стиль» и «тема». Существует имеет место небольшое снижение производительности, когда браузер по-прежнему обращается к вашему серверу только для того, чтобы вернуться в другое место, но с современными конвейерными браузерами это не является реальной проблемой. Кроме того, в большинстве случаев перенаправленный ресурс будет «запомнен» браузером, который больше не будет обращаться к вашему серверу (по крайней мере, в течение некоторого времени).
Предлагается еще одна возможность, например. NginX заключается в перезаписи выходного HTML. Вы можете сделать так, чтобы все ссылки на ваш сайт/статический переходили на другой сайт/другой путь/статический, используя HttpSubModule.
Остерегайтесь того, что некоторые файлы могут содержать как абсолютные ссылки, которые могут больше не работать, так и относительные ссылки, которые могут "выйти" за рамки перезаписи и, таким образом, снова больше не работать. . Например:
- javascript с использованием "отложенной загрузки" или "добавочной/условной загрузки" для плагина и подобных функций.
- Файлы CSS, содержащие ссылки на шрифты и фоновые изображения (
url(../../../path/...)
).
Также будьте осторожны, поскольку вы указали pagespeed, этот mod_pagespeed
может быть несовместим с этим типом перезаписи URL, поскольку он будет анализировать HTML и пытаться сжать ресурсы, на которые он ссылается. Таким образом, вы можете получить все свои здоровенные CSS-файлы, выгруженные в CDN, и все равно загружаемые с вашего сервера, встроенные в оптимизированную, сжатую и трудно распознаваемую форму в вашем единственном mod_pagespeed'ed. локальная ссылка на CSS.
То есть в вашем html у вас есть
<link href="/app/small.css" ... />
<link href="/static/big.css" ... />
<link href="/static/big2.css" ... />
и вы ожидаете, что переписывание загрузит статические данные с внешнего сайта. Если бы не было дальнейших оптимизаций, так бы и случилось. Вместо этого ваш клиент видит страницу, переписанную mod_pagespeed
, на которой написано
<link href="/app/small+big+big2.css?pagespeed&whatever" />
и он никогда не будет запрашивать что-либо в /static
, никогда не будет перенаправлен, а вместо этого запросит и загрузит сжатый, оптимизированный, но все еще больший, чем вам хотелось бы, объединенный CSS с вашего сервера.
person
LSerni
schedule
01.10.2014