定义了多个资源\基础\ URL的Symfony2细枝资源中的奇怪行为

定义了多个资源\基础\ URL的Symfony2细枝资源中的奇怪行为,symfony,configuration,twig,assets,Symfony,Configuration,Twig,Assets,我正在处理一些遗留代码和一个symfony2应用程序 config.yml: framework: ... templating: engines: ['twig'] assets_base_urls: http: [%app.path%, %cdn.path%] app.path:旧资产的路径 cdn.path:symfony应用程序资产的路径 <img ... src="{{ asset('foto/'~foto.pathB) }}"> <im

我正在处理一些遗留代码和一个symfony2应用程序

config.yml:

framework:
...
templating:
    engines: ['twig']
    assets_base_urls:
      http: [%app.path%, %cdn.path%]
app.path:旧资产的路径

cdn.path:symfony应用程序资产的路径

<img ... src="{{ asset('foto/'~foto.pathB) }}">
<img ... src="{{ asset('foto/'~foto.pathM) }}">
<img ... src="{{ asset('foto/'~foto.pathS) }}">

问题是关于这三个img,第一个img上的asset()指的是第二个base_url(cdn.path),最后两个指的是第一个base_url(app.path),对我来说似乎不是一个确定的行为。虽然所有的资产都在第一个base_url上,但我真的不明白为什么第一个asset()会跳到下一个base_url

顺便说一句,我已经清理了我的开发缓存,但没有成功

更新

来自:

如果提供了多个基本URL,Symfony2将从 每次生成资产路径时收集

现在如果我们看一下,我们有:

public function getBaseUrl($path)
    {
        switch ($count = count($this->baseUrls)) {
            case 0:
                return '';

            case 1:
                return $this->baseUrls[0];

            default:
                return $this->baseUrls[fmod(hexdec(substr(md5($path), 0, 10)), $count)];
        }
    }

对于数组(
default
,此处),从数组中获取的url取决于作为函数参数提供的
$path
。所以一个
$path
总是会给出相同的url,但是所有
$path
都不一定给出相同的url。

非常棒的答案,尽管我很害怕这个实现,但你知道为什么它会这样吗?我非常确定在第一个有效的资产匹配之前,基本URL是从0迭代到n-1的。有一些提示可以帮助我解决这个问题吗?嗯,不知道为什么,但其中一个原因可能是,这是一种尝试在您传递的每个baseUrl上生成尽可能多的链接的方法(这样一个不会获得所有流量,而另一个不会做任何事情)。但这只是一个假设!:)这是一个很好的假设,我也有同样的假设,但“负载平衡”将是比“资产基础URL”更清晰的描述方式:)再次感谢你