Magento CSS图像指令和CDN冲突

Magento CSS图像指令和CDN冲突,css,cdn,magento,Css,Cdn,Magento,我在这里看到了一些关于当CSS托管在CDN中时CSS中的相对图像路径不起作用的帖子,但是我有一个问题我找不到答案。在磁电机商店中,我们启用了合并CSS功能。不幸的是,在Magento中,当您执行此操作时,会将它们合并到媒体文件夹中的单个文件中,而不是皮肤文件夹中。所以现在,图像的相对路径不起作用。Magento在非安全URL中找不到资源时尝试安全URL。在我们的例子中,我们不将CDN用于安全页面,因此它可以使用安全URL来查找图像。这在技术上是可行的,但我们的网站在返回图像方面比CDN慢,我真的

我在这里看到了一些关于当CSS托管在CDN中时CSS中的相对图像路径不起作用的帖子,但是我有一个问题我找不到答案。在磁电机商店中,我们启用了合并CSS功能。不幸的是,在Magento中,当您执行此操作时,会将它们合并到媒体文件夹中的单个文件中,而不是皮肤文件夹中。所以现在,图像的相对路径不起作用。Magento在非安全URL中找不到资源时尝试安全URL。在我们的例子中,我们不将CDN用于安全页面,因此它可以使用安全URL来查找图像。这在技术上是可行的,但我们的网站在返回图像方面比CDN慢,我真的很想解决这个问题。除了浏览所有CSS精灵,或者将CDN URL硬编码为图像路径(不需要),或者删除所有CSS指令,并在包含不需要的元素的模板文件中调用
getSkinUrl()
(稍微不需要),我对如何修复这一问题感到困惑。肯定有人以前遇到过这个问题。对如何解决这个问题有什么建议或想法


谢谢

自己将CSS文件合并成一个文件,并更改头xml以仅调出这一个CSS文件。然后CSS应该能够与您的图像一起生活在CDN上。我知道这不是一个非常奇特的解决方案,但无论如何,它可能值得深入研究一个CSS文件(每个主题)。

实际问题与CDN或合并CSS文件相对于图像的位置无关。Magento实际上做了一些很酷的事情…它解析CSS文件并用完整的URL填充所有的相对URL。它在
\u prepareUrl
方法中的
Mage\u Core\u Model\u Design\u包
类中执行此操作。它决定在以下行中使用安全URL还是非安全URL:

$secure = $store->isAdmin() ? $store->isAdminUrlSecure() : $store->isFrontUrlSecure();
这里的问题是,即使所讨论的页面实际上并不安全,它也会使用一个安全的URL。如果启用了“在前端使用安全URL”,则不会一直使用安全URL。它仅在客户帐户页面和购物车/结帐上使用它们。任何其他页面都不安全,不需要安全资源

当合并URL时,Magento很聪明,因为它在
媒体
文件夹下创建了一个
css
和一个
css\u secure
文件夹。如果查看客户帐户页面的源代码,您会注意到它正在从
CSS\u secure
文件夹中提取CSS,但在主页上它使用
CSS
文件夹。因此,已经设置好了解安全页面和非安全页面之间的区别,但是CSS的合并没有考虑到这一点

为了解决这个问题,我做了一个基本的扩展,用一个新的
\u prepareUrl
方法重写
core/design\u包
模型。唯一的区别是,就在上面提到的行之后,我添加了以下内容:

$secure = $secure && Mage::app()->getRequest()->isSecure();
这确保只有
css\u secure
文件夹中的合并css文件才能获得资源的安全URL


希望这能帮助任何有类似问题的人。

问题是真的……但我对原因的评估完全不正确。我已经找出了发生这种情况的原因,并找到了解决办法。请看下面为我准备的答案。您是否已将此作为错误提交给Magento?