网站设置
Drupal 7.50
Advagg模块
服务器设置
为了在更新和实施期间允许“零停机”,有两个服务器(使用Apache2配置),名称为 a.org , b.org 。这些是无法通过公共访问的域,您必须在本地主机文件中配置它们才能访问它们。在开发过程中,“实时站点”和“开发站点”的角色通过注释/取消注释其服务器配置的 ServerAlias 标记在一个和另一个之间切换。 ServerAlias 是网站的实际真实域名, truedomain.org 。
问题
为了加速Drupal,我想通过Advagg模块进行CSS聚合和压缩。在开发网站上工作时(这次 b.org ),它运行良好。字体加载或类似的东西没有问题。当我通过取消注释 ServerAlias 标记来切换 b.org 成为实时网站时,问题就出现了。访问该站点时,由于CORS阻止了大量的字体加载错误。似乎Advagg尝试从 b.org ServerName 而不是通过其 ServerAlias 标记加载它们。
字体导入在CSS文件中,它们是相对的,因为字体文件位于同一目录中。由于我的服务器设置,我无法使用绝对路径。
我看到的唯一出路是允许CORS仅用于字体,例如:
<FilesMatch ".(eot|ttf|otf|woff)">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
有没有人在Drupal中遇到过这种情况?有什么我可以使用Advagg配置来解决这个问题吗?
答案 0 :(得分:0)
@ CBroe的评论告诉我答案(谢谢)。我以为我会在这里写出来,并提供一些额外内容以及如何修复它们。
admin / config / development / performance / advagg ,在那里您会找到标题为“隐藏选项”下的折叠菜单,您必须检查以下选项:“不要通过files_create_url()”
运行CSS url()值修复了我的CORS字体加载问题。当字体根本没有加载并且我网站上的文字恢复为某些默认字体时,出现第二问题。发生这种情况是因为在 CSS Compression Drupal删除'',并且字体名称(aaag!)上有一个华丽的空间。当然,一旦''在font-face规则中从url()中删除,该字体就不存在了。因此,我必须将访问该名称的字体名称和规则更改为没有该空间。
一旦完成,即使清除缓存后,我也看到Drupal仍在发送旧 Advagg CSS压缩。为了解决这个问题,我删除了文件夹 sites / default / files / advagg_css 中的所有内容以强制使用新内容。
随之而来的是,问题已经完成了,是的。