首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento CSS图像指令与CDN冲突

Magento CSS图像指令与CDN冲突
EN

Stack Overflow用户
提问于 2011-11-14 22:15:25
回答 2查看 2.3K关注 0票数 2

我在这里看到了一些关于CSS中的相对图像路径不起作用的问题,当CSS托管在CDN中时,但是我无法找到答案。在我们的Magneto存储中,我们打开了合并CSS功能。不幸的是,在Magento中,当您这样做时,它会将它们合并到media文件夹中的单个文件中,而不是皮肤文件夹中。所以现在,图像的相对路径不起作用。Magento在非安全URL中找不到资源时尝试安全URL。在我们的例子中,我们不对安全页面使用CDN,因此它能够使用安全URL找到图像。这在技术上是可行的,但是我们的站点返回图像的速度比CDN慢,我真的很想修复这个问题。除了浏览所有CSS精灵,或者将CDN URL硬编码为图像路径(不受欢迎),或者将CSS指令全部删除在一起,并在包含违规元素的模板文件中添加对getSkinUrl()的调用(稍微不那么不受欢迎),我不知道如何解决这个问题。以前肯定有人遇到过这个问题。对于如何解决这个问题,有什么建议或想法吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-17 16:20:16

实际问题与CDN或与图像相关的合并CSS文件的位置无关。Magento实际上做了一些事情,cool...it解析CSS文件并使用完整的URL填充所有相对URL。它在Mage_Core_Model_Design_Package类中的_prepareUrl方法中执行此操作。它决定是在下面的行中使用安全URL还是非安全URL:

代码语言:javascript
复制
$secure = $store->isAdmin() ? $store->isAdminUrlSecure() : $store->isFrontUrlSecure();

这里的问题是,即使所讨论的页面实际上并不安全,它也会使用安全的URL。如果在前端启用了use,那么它不会一直使用安全URL。它只在客户帐户页面和购物车/结账处使用它们。任何其他页面都不安全,也不需要安全的资源。

合并URL时,Magento很聪明,因为它在css文件夹下创建了一个css_secure文件夹和一个media文件夹。如果您查看客户帐户页面的源,您会注意到它正在从css_secure文件夹中提取CSS,但是在主页上它使用的是css文件夹。所以它已经被设置为知道安全页面和非安全页面之间的区别,但是CSS的合并并没有考虑到这一点。

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

代码语言:javascript
复制
$secure = $secure && Mage::app()->getRequest()->isSecure();

这确保只有css_secure文件夹中的合并的css文件才能获得资源的安全URL。

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

票数 2
EN

Stack Overflow用户

发布于 2011-11-15 13:32:24

单独将CSS文件合并到一个文件中,并将头xml更改为只提取这一个css文件。然后,CSS应该能够与您的图像一起生活在CDN上。我知道这不是一个非常好的解决方案,但它可能是值得深入到一个CSS文件(每个主题)无论如何。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8128954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档