在没有 DNS 调用的情况下加载 Javascript 和 CSS 文件

Posted

技术标签:

【中文标题】在没有 DNS 调用的情况下加载 Javascript 和 CSS 文件【英文标题】:Loading Javascript and CSS files without DNS calls 【发布时间】:2016-04-29 22:48:54 【问题描述】:

如果我在标头中使用完整的域名引用 javascript 文件,加载速度是否比其他方式慢?

$domain = 'https://www.example.com';
echo '<script src="'.$domain.'/js/index.js"></script>';

问题是,如果我不打算直接引用它们,我将需要某种方式来处理它,以便即使页面使用 .htaccess 重写规则重写到像 https://www.example.com/subfolder/subfolder 这样的子文件夹,它们也会加载。

有没有更好、更快的加载方式,但仍然灵活?

【问题讨论】:

【参考方案1】:

您似乎将绝对 URI 与 DNS 查找要求混淆了。

给定http://example.com/index.html 上的 HTML 文档,那么这两个脚本元素之间的唯一区别:

<script src="/foo.js"></script>
<script src="http://example.com/foo.js"></script>

... 是后者有额外的 18 字节 HTML(即使在应用 HTTP 压缩之前也无足轻重)。

无论您使用两种方法中的哪一种,浏览器都会将 URL 解析为 http://example.com/foo.js。如果它的 DNS 缓存中有 example.com(因为它刚刚加载了 HTML 文档),那么它就不会访问 DNS 服务器来查找它的位置。

【讨论】:

【参考方案2】:

这个呢

$domain = $_SERVER['SERVER_NAME'];
echo '<script src="'.$domain.'/js/index.js"></script>';

【讨论】:

我担心 DNS 调用会降低我的网站速度 - $_SERVER['SERVER_NAME'] 会产生什么? 嗯,这给了 www.example.com - 这不会仍然导致 dns 调用吗? 你的项目被放置在这个路径https://www.example.com/subfolder/subfolder?? 这将打印您去过的主机名

以上是关于在没有 DNS 调用的情况下加载 Javascript 和 CSS 文件的主要内容,如果未能解决你的问题,请参考以下文章

c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

如何在没有任何 HTTP 调用的情况下获取用户所在的大陆?

如何在不使用require_once的情况下自动加载和调用独立的PHP类?

如何在没有休息调用的情况下将 php json 变量分配给 angular?

如何在不重新加载整个页面的情况下刷新 div?

WCF 客户端端点:没有 <dns> 的 SecurityNegotiationException