繁体   English   中英

静态内容来自子域

[英]Static content serve from subdomain

我有domain.localhostasset.domain.localhost htppd.conf中的虚拟主机已正确设置。

我在根目录“ public /”中有文件夹,并且还有其他文件夹,例如图像,脚本,样式 我需要从domain.localhost提供内容,并从asset.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]

第一个问题:分别加载资产并减少来自域的请求数是正确的方法吗?

第二个问题:我在萤火虫中检查了它

网络形象在这里

并且所有内容都从assets.domain.localhost加载,但是css和js加载了两次。 第一次从具有302代码的domain.localhost(只是一个字节,但它是请求的),然后是从具有304代码的asset.domain.localhost。 我做错了什么?

更新资料

此解决方法增加了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>

在更改之前,它起作用了,而不是缓存不起作用。

更新2

好的问题是第一次请求domain.localhost,assets.domain.localhost未缓存,塞康请求被高速缓存。 如何摆脱不必要的要求?

您必须确保将HTML更改为包含带有Assets.domain.localhost域的Asset-URL。

如果您保留HTML原样,浏览器将向domain.localhost请求文件,从Apache(在您的.htaccess中定义)接收到“ 302 Found”,然后再次从asset.domain.localhost请求文件。

如果无法在HTML中更改资产链接,则可以尝试使用mod_substitute之类的方法即时替换链接。 但是我从未在现实世界中尝试过这种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM