2

我看到了一些相关的问题,但没有针对此案例的具体问题。

这个问题是在 Magento 的上下文中提出的,但绝不限于这里。

我有一个<head>模板,除了负责人会做的其他事情外,它还包括各种 Javascript 文件。

出于一般原因,我更愿意从作者的 CDN 中包含一个脚本。不幸的是,作者没有通过 HTTPS 提供版本,这将导致用户在加载此脚本时看到“不安全的内容”(并且取决于浏览器,无法运行代码)。

我知道我可以简单地将这个文件保存到我的本地域,它可以通过 HTTPS 访问,但正如我所说,我更愿意从 CDN 获取这个脚本。

作为一种解决方法,我使用了(在模板中):

<script type="text/javascript">
    <?php echo file_get_contents('http://path.to/the/file.js' ?>
</script>

这允许文件在没有 HTTPS 版本的情况下存在,因为它是在解析 PHP 时包含的,而不是作为运行时在浏览器中加载的单独资源。

假设我在模板中留下了一条评论来解释为什么使用这种方法,那么这样做我会发现什么重大的反作用吗?

4

2 回答 2

1

这种方法有两个缺点:

  • 用户无法缓存 Javascript(这会导致加载时间变慢)
  • 您使用额外的带宽和额外的连接从其他来源下载内容(再次减慢加载时间)。如果是高流量网站,对性能影响很大。

假设你想直接从 CDN 下载的原因是因为你总是想要一个更新的脚本。您可以首先下载脚本的内容并将其放在您的服务器上。每天有一个 cron 作业从 CDN 重新下载脚本。这将帮助您获得更新的脚本以及更好的性能。

于 2013-09-25T23:30:15.670 回答
0

我不知道我们在这里谈论的是哪种 javascript 文件。如果它很受欢迎,那么您很可能可以获得已经托管它的 CDN。如果这是您包含的随机 javascript 文件,那么您可以执行以下操作:

  1. 通过 curl 获取 javascript 文件。
  2. 将抓取的 javascript 文件推送到您的个人 CDN。
  3. 链接您的视图文件以指向托管在 CDN 上的 javascript 文件。
  4. 设置 CRON 任务以检查 javascript 源的更新。如果找到,重复过程 1-2-3。

这可能太多了,但这是一种选择。

您使用的缺点之一是流量。您将同时使用入站和出站流量,因为您每次都会请求并提供 javascript。您应该缓存它(这是 CDN 的原因之一)并从那里提供服务。

于 2013-09-25T23:31:36.493 回答