2016-03-07 51 views
0

我已經安裝並配置了一個帶有虛擬主機服務圖像的Apache服務器。由我的Apache服務器提供的文件沒有被保存在瀏覽器緩存中

當我第二次在瀏覽器中加載帶有圖像的頁面時(圖像應在第一次加載頁面後緩存)時,瀏覽器不會從緩存中獲取圖像(或文件),並且認爲這應該。

有什麼不對?我使用的是谷歌瀏覽器,當我從其他服務器加載其他一些網頁時,緩存工作,所以我認爲我有一些Apache的問題,但我不確定。

非常感謝。

響應是由Dash播放器播放的視頻片段。

響應頭:

accept-ranges:bytes 
content-length:194431 
date:Wed, 09 Mar 2016 07:42:07 GMT 
etag:"2f77f-52acd33f8b167" 
last-modified:Tue, 02 Feb 2016 17:55:12 GMT 
server:Apache/2.4.18 (Unix) OpenSSL/1.0.2e PHP/7.0.2 
status:200 

這樣做後:

ExpiresActive On 

# Set up caching on media files for 1 year (forever?) 
<FilesMatch "\.(mp4|m4s)$"> 
ExpiresDefault "access plus 3600 seconds" 
Header set Cache-Control "public" 
Header set Content-Type "video/mp4" 
Header set Vary "Host" 
Header set Access-Control-Allow-Origin "*" 
</FilesMatch> 

的標題是:

accept-ranges:bytes 
access-control-allow-origin:* 
cache-control:public 
content-length:194431 
content-type:video/mp4 

但它不保存在緩存中,我的意思是,當我重新加載網絡或視頻,它不會像緩存那樣從緩存中獲取它。

+0

請編輯您的問題,以包括請求您的圖像時返回的HTTP頭或無法回答。 –

回答

0

好的,我已經解決了這個問題。

我使用的是https連接,並且我使用的證書沒有正確的參數(通用名稱必須是服務器上編程的URL的名稱),並且服務器的證書必須由某個CA進行身份驗證,所以我已經制作了CA證書來驗證服務器證書。這意味着如果您有不安全的https連接,Chrome不會將文件保存在緩存中。

更正所有證書後,我已上傳到谷歌瀏覽器證書以信任我的網站(配置谷歌瀏覽器,高級選項,管理https/ssl證書)。之後,我可以將文件保存在緩存中,因爲證書使https連接安全(chrome url欄上的綠色鎖)。

這是我的問題,這就是我解決它的方法。

感謝您的回答和您的時間! ;)

0

您不包括任何緩存控制標頭,告訴瀏覽器緩存資源。規範不清楚如何處理這個問題,但大多數瀏覽器選擇不緩存,除非明確告知。

您需要包括Apache的配置是這樣的(假設你已經在包括mod_expiries模塊):

ExpiresActive On 

# Set up caching on media files for 1 week 
<filesMatch ".([iI][cC][oO]|[gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[pP][nN][gG]|[fF][lL][vV]|[pP][dD][fF]|[sS][wW][fF]|[mM][oO][vV]|[mM][pP]3|[wW][mM][vV]|[pP][pP][tT])$"> 
    ExpiresDefault A604800 
    Header append Cache-Control "public" 
</filesMatch> 

# Set up caching on font files for 6 months 
<filesMatch ".([eE][oO][tT]|[tT][tT][fF]|[sS][vV][gG]|[Ww][Oo][Ff][Ff]|[Ww][Oo][Ff][Ff]2)$"> 
    ExpiresDefault 15552000 
    Header append Cache-Control "public" 
</filesMatch> 

這將進而產生一個標題是這樣的:

cache-control:max-age=10800, public 

我寫一個博客文章,如果你想了解更多細節:https://www.tunetheweb.com/performance/http-performance-headers/caching/

+0

感謝您的回答,但我無法達到將文件保存在緩存中的目的,就像我在問題中所說的那樣(我在那裏寫了更多的東西)。謝謝你的幫助!!! – Elo

相關問題