gpt4 book ai didi

php - 什么是为静态资源添加前缀的变量的好策略?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:48 25 4
gpt4 key购买 nike

我们正在扩展一个网站,我们想为 future 做计划,我们可能希望在一个子域中托管我们的图像(或者甚至可能完全是一个单独的域,例如 CDN)。我们目前使用以下 HTML 在 HTML/PHP 代码中引用图像:

<img src="/images/ourlogo.jpg" alt="Our Logo" />

我正在考虑召开公司大会以搬到:

<img src="<?php echo STAT_IMG;?>ourlogo.jpg" alt="Our Logo" />

其中 STAT_IMG 是一个全局 PHP 常量,最初定义为与当前情况相同,即

define('STAT_IMG', '/images/');

但稍后可以更改为:

define('STAT_IMG', 'http://www.superfastcdn.com/');

我这样做会遇到任何问题吗?

我已经想到的事情:

  • 我可以看到代码库中会有更多的字符串追加 - 但我不认为它在性能方面会很明显。
  • 它使代码更难看(尤其是在我混合使用 PHP 和 HTML 的示例中)。
  • 一个问题是有时您需要为图像明确使用 https(或副版本)。例如,如果您将图片放在电子邮件中,许多客户端(例如 gmail)使用 https 协议(protocol),因此引用 http(即未加密协议(protocol))的资源将在某些浏览器(例如 IE)中生成混合内容警告). This article from encosia有一个想法通过将 STAT_IMG 定义为“无协议(protocol)”来解决这个问题,例如define('STAT_IMG', '//www.superfastcdn.com/');。我希望他们的想法能奏效。
    • 我们可能需要一些其他常量来显式定义协议(protocol),例如define('STAT_IMGS', 'https://www.example.com/images/');define('STAT_IMGNS', 'http://www.example.com/images/'); 除了之前的非绝对版本 (define('STAT_IMG', '/images/');).
  • 我需要将相同的策略应用于其他静态资源,例如 javascript 和 CSS 样式表。

最佳答案

听起来您需要的是一个函数——这就是在 Rails、Symfony 和 Django 等框架中处理它的方式。一般来说,封装逻辑是个好主意,这样您就不会发现自己必须为给定的设计更改更新更多地方。

对于初学者,您可以将它放在所有模板通用的位置:

<?

$my_domain = "something.com";

function static_url($relative_path, $SSL=false) {
$prefix = $SSL ? 'https' : 'http';
return "{$prefix}://{$my_domain}{$relative_path}";
}

然后,您可以将其作为您的模板:

<img src="<?=static_url('images/ourlogo.jpg'); ?>" />

或者,如果您需要 https:

<img src="<?=static_url('images/ourlogo.jpg', true); ?>" />

关于php - 什么是为静态资源添加前缀的变量的好策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4790899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com