在没有 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 运行时中加载该程序集。
如何在不使用require_once的情况下自动加载和调用独立的PHP类?