2016-02-27 4 views
0

У меня есть domain.localhost и assets.domain.localhost. Виртуальный хост в htppd.conf установлен правильно.Статический контент от субдомена

У меня есть папка в корне «общественный /» и есть другие папки, такие как изображения, скрипты, стили. Мне нужно обслуживать контент из domain.localhost и статических изображений, скриптов и стилей сервера из assets.domain.localhost.

У меня есть этот код в HTAccess:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !assets\.domain\.localhost 
RewriteCond %{REQUEST_URI} \.(png|gif|ico|css|js)$ [NC] 
RewriteRule ^(.*) http://assets.domain.localhost/$1 [L] 

Первый вопрос: Правильно ли способ загрузки активов и уменьшить раздельно количество запроса от домена?

Второй вопрос: Я проверил его в поджигатель

image of network is here

и все было загружено из assets.domain.localhost, но CSS и JS был загружен дважды. Первый раз из domain.localhost с кодом 302 (всего несколько байтов, но это запрос), а не из assets.domain.localhost с кодом 304. Что я делаю неправильно?

Update

Этот способ увеличения результата в PageSpeed ​​Insights, но снижение тест производительности веб-страницы. Во втором - более длинный ответ от сервера, и активы больше не являются кешем. У меня есть этот в htaccess для этого:

Header set Cache-Control "max-age=604800, public, must-revalidate" 
<IfModule deflate_module> 
    <IfModule filter_module> 
    AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml image/svg+xml 
    AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript 
    </IfModule> 
</IfModule> 

Перед изменениями это сработало, а не кеширование не работает.

Update2

Ok проблема с первым запросом к domain.localhost, что не кэшируется, Secon запрос на assets.domain.localhost кэшируются. Как избавиться от первого ненужного запроса?

ответ

0

Вы должны убедиться, что вы изменили свой HTML-код, чтобы содержать URL-адреса активов с помощью вашего домена asset.domain.localhost.

Если вы оставите свой HTML как есть, Браузер запросит файлы из домена.localhost, получит «302 Найдено» из Apache (как определено в вашем .htaccess), а затем запросит файлы из assets.domain.localhost еще раз.

Если вы не можете изменить Asset-Links в своем HTML, вы можете попробовать что-то вроде mod_substitute, чтобы заменить ссылки на лету. Но я никогда не пробовал это в реальном мире.

+0

Я не изменю свой html. Я не хочу, чтобы изображения адреса и т. Д. Абсолютно. Моя идея позволяет относительный путь к изображениям, js, css, но в htaccess установить загрузку из assets.domain.localhost. Возможно? Логично, что вы пишете во втором абзаце, но почему это поведение происходит только в js и css, а изображения загружаются непосредственно из поддомена asets? – tomasr

+0

Это должно быть как CDN. Отремонтируйте то же поведение, что и css, и js имеют jpegs, png не имеют – tomasr

Смежные вопросы