我有一台运行apache的EC2服务器(www.example.com),mod_pagespeed已安装并正常工作。
我在Amazon S3存储桶(examplecdn.com)上托管了静态内容
当从https://www.example.com提供html时,有几个样式引用从https://examplecdn.com提供。
发送的一些示例html<link rel="stylesheet" type="text/css" href="//examplecdn.com/assets/css/file_one.css"/>
<link rel="stylesheet" type="text/css" href="//examplecdn.com/assets/css/file_two.css"/>
我已阅读有关mod_pagespeed的文档,但我无法理解它。我希望将这两个请求重写为一个http请求。
我已确认使用wget可以从www.example.com服务器访问https://examplecdn.com/assets/css/file_one.css
我已将我的设置简化为使用.htaccess进行测试。我可以轻松打开和关闭简单的过滤器,而无需重启apache服务器。我正在尝试使用combine_css过滤器来尝试启动和运行基本设置。这是我的.htaccess文件:
ModPagespeed on
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters combine_css
我知道文档中提到了很多“域名”设置,但我不知道哪些可以解决问题。有人可以告诉我我需要对我的.htaccess文件做出哪些更改才能使其正常工作?
谢谢!
答案 0 :(得分:2)
来自combine css docs:
过滤器不会将来自多个不同域的资源合并在一起,即使这些域都是由Domain授权的。它将来自多个不同域的资源合并在一起,这些域通过MapRewriteDomain映射在一起。
该指令允许服务器接受www.example.com的https请求,而无需SSL证书来获取资源 - 事实上,这是PageSpeed可以为https请求提供服务的唯一方式,因为它目前无法使用https来获取资源。 / p>
ModPagespeedMapOriginDomain http://examplecdn.com/ https://examplecdn.com/
也许这对您有用,但为什么不将这些文件放在本地?无论如何,它们都将由您的Apache服务器提供服务。
[编辑]
经过测试,这种方式对我有用:
pagespeed on;
pagespeed RewriteLevel CoreFilters;
pagespeed Domain *.example.com;
pagespeed Domain https://s3.amazonaws.com/mybucket;
pagespeed MapOriginDomain http://localhost https://s3.amazonaws.com;
pagespeed EnableFilters combine_css;
使用nginx进行测试,但应该与Apache一样。如果映射的域位于云端,也应该没有区别。