2016-03-07 54 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

相关问题