2017-02-28 214 views
2

我有一個EC2服務器運行Apache(www.example.com)和mod_pagespeed安裝和工作。mod_pagespeed與亞馬遜S3

我託管在Amazon S3的桶(examplecdn.com)

當HTML從https://www.example.com提供靜態內容,有幾個款式參考,它們被從https://examplecdn.com服務。

下面是https://www.example.com

<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文檔發送一些樣本HTML,但我無法理解它。我希望這兩個請求被重寫成一個http請求。

我已經使用wget是https://examplecdn.com/assets/css/file_one.css從www.example.com服務器

我簡化了我的設置使用的.htaccess用於測試目的訪問證實。我可以輕鬆打開和關閉簡單的過濾器,無需重新啓動Apache服務器。我正在嘗試使用combine_css過濾器來嘗試啓動並運行基本設置。這是我的.htaccess文件:

ModPagespeed on 
ModPagespeedEnableFilters remove_comments 
ModPagespeedEnableFilters collapse_whitespace 
ModPagespeedEnableFilters combine_css 

我知道文檔中提到大量的「域」的設置,但我不知道哪些會做的伎倆。有人可以告訴我需要對我的.htaccess文件進行哪些更改才能使其正常工作?

謝謝!

回答

2

從合併CSS文檔:

過濾器將不會從多個不同領域的資源合併到一起,即使這些域的每個授權域。它將合併來自通過MapRewriteDomain映射到一起的多個不同域的資源。

而且from here

這個指令讓服務器接受www.example.com HTTPS請求,而不需要SSL證書來獲取資源 - 事實上,這是唯一的方法可以的PageSpeed HTTPS服務請求目前不能使用https獲取資源。

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一樣。如果映射域位於雲端,也應該沒有區別。

+0

我傾向於同意......在S3面前這樣做似乎可能適得其反,至少在理論上是這樣,但它可能會奏效。首先要做的邏輯事情就是讓它按照apache服務器本地的所有要求工作,然後*使其與S3的內容協同工作。然後,作爲獎勵,你將有一個性能比較的基礎。 –

+0

我試過了你的建議,但沒有奏效。 :-(我忘了提及CloudFront也是混合的,我想更好地理解需要採取什麼樣的配置步驟來利用FetchHttp後臺進程來獲取這些靜態資源並重寫html以便 – noctufaber

+0

另一件事 - 我試圖從原始域引用一個css文件並且它工作,所以examplecdn.com和example.com是可以互換的。不幸的是,這個html不能輕易地改成從example.com引用css,我想找到一種方式來使用它,我相信我們很可能會改變它。 – noctufaber