标签: mod-expires

停止浏览器对应该保持缓存的图像发出HTTP请求 - mod_expires

在这里阅读了很多文章和一些问题后,我终于成功激活了Apache mod_expires,告诉浏览器它必须缓存1年的图像.

<filesMatch "\.(ico|gif|jpg|png)$">
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
  Header append Cache-Control "public"
</filesMatch>
Run Code Online (Sandbox Code Playgroud)

谢天谢地,服务器响应似乎是正确的:

HTTP/1.1 200 OK 
Date: Fri, 06 Apr 2012 19:25:30 GMT 
Server: Apache 
Last-Modified: Tue, 26 Jul 2011 18:50:14 GMT 
Accept-Ranges: bytes 
Content-Length: 24884 
Cache-Control: max-age=31536000, public 
Expires: Sat, 06 Apr 2013 19:25:30 GMT
Connection: close
Content-Type: image/jpeg 
Run Code Online (Sandbox Code Playgroud)

好吧,我认为这会阻止浏览器下载甚至向服务器询问有关图像的信息,为期1年.但部分原因:如果您关闭并重新打开浏览器,浏览器不会再从服务器下载图像,但浏览器仍然会向每个图像发送HTTP请求来询问服务器.

如何强制浏览器停止为每个图像发出HTTP请求?即使这些HTTP请求后面没有下载的图像,它们仍然是向服务器发出的请求,这些请求可能会造成延迟,并减慢页面渲染速度!

我已经告诉浏览器它必须将图像保存在缓存中1年!为什么浏览器仍在为每个图像查询服务器(即使它没有下载图像)?!


查看FireBug中的网络图(菜单FireBug> Net> Images)我可以看到不同的缓存行为(我显然开始使用浏览器缓存完全空,我使用"清除所有历史记录"强制在浏览器上删除缓存):

  • 当第一次加载页面时,所有图像都被下载(如果我通过单击浏览器的重新加载页面按钮强制页面重新加载,则会发生同样的事情).这很有道理!

  • 当我浏览网站并返回同一页面时,根本不会下载图像,浏览器甚至不会向服务器询问 …

browser caching mod-expires http-headers

45
推荐指数
5
解决办法
3万
查看次数

使用Apache进行网站图像缓存

我怎样才能获得Apache上的静态内容{被浏览器缓存}而不是{检查新鲜度{每次请求}}?

我正在Apache webserver上托管的网站上工作.最近,我正在使用标题(针对不同类型的内容的Content-Type)进行测试,并看到了很多对图像的条件请求.例:

200 /index.php?page=1234&action=list
304 /favicon.ico
304 /img/logo.png
304 /img/arrow.png
(etc.)
Run Code Online (Sandbox Code Playgroud)

虽然图像文件是静态内容并且由浏览器缓存,但每次用户打开链接到它们的页面时,它们都是有条件请求的,它们发送"304 Not Modified".这很好(传输的数据较少),但这意味着每次页面加载会产生20多个请求(由于所有这些往返行程导致页面加载时间更长,即使启用了Keep-Alive和流水线操作).

如何告诉浏览器保留现有文件而不检查更新版本?

编辑:mod_expires方法工作,即使使用favicon.

apache mod-expires image-caching

43
推荐指数
2
解决办法
6万
查看次数

使用哪一个:Expire Header,Last Modified Header或ETags

我在Apache上运行PHP,并对如何实现服务器端缓存感到困惑,以便加快网站加载速度.

是什么之间的区别Expires,Last-Modified以及ETag头,哪一个应该在什么情况下使用?

php etag apache2 last-modified mod-expires

31
推荐指数
2
解决办法
2万
查看次数

如何使用mod_headers和mod_expires进行缓存

我想在我的网站上缓存图像和其他文件,所以我做的是确保mod_headers和mod_expires: -

/usr/sbin/httpd -l
Run Code Online (Sandbox Code Playgroud)

然后编辑.htaccess为: -

ExpiresActive On
ExpiresDefault A0


# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>

# Set up caching on media files for 1 week
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A604800
Header append Cache-Control "public"
</FilesMatch>

# Set up 2 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A9200
Header append Cache-Control "proxy-revalidate"
</FilesMatch>

# Force no caching for dynamic files
<FilesMatch "\.(php|htm)$">
ExpiresActive Off
Header …
Run Code Online (Sandbox Code Playgroud)

apache .htaccess caching mod-expires mod-headers

24
推荐指数
1
解决办法
5万
查看次数

如何检查apache中启用的mod_headers和mod_expires模块

我想检查我的服务器中是否启用了mod_headers和mod_expires模块

是否有一种方法可以使用某些php函数列出apache启用/禁用模块,就像我们使用phpinfo()列出php信息一样; 功能?

apache apache-config mod-expires phpinfo mod-headers

22
推荐指数
4
解决办法
7万
查看次数

具有最后修改的缓存过期控制

在Apache的mod_expires模块中,有一个Expires指令有两个基本时间段,访问修改.

ExpiresByType text/html "access plus 30 days"
Run Code Online (Sandbox Code Playgroud)

可以理解的是,缓存将在30天后请求新鲜内容.

然而,

ExpiresByType text/html "modification plus 2 hours"
Run Code Online (Sandbox Code Playgroud)

没有直觉意义.

除非向服务器发出请求,否则浏览器缓存如何知道文件已被修改?如果它正在调用服务器,缓存此指令有什么用?在我看来,我不理解缓存的一些关键部分.请赐教.

browser apache caching mod-expires

15
推荐指数
1
解决办法
2万
查看次数

Apache FilesMatch - 匹配正则表达式中的文件夹

我正在尝试使用Apache的.htaccess文件缓存一些文件.我想缓存一个特定的文件夹比其他任何东西都长,所以我一直在尝试使用FilesMatch指令,如下所示:

<FilesMatch "skins(.*)\.(jpg|png|gif)">
ExpiresDefault A2592000
</FilesMatch>

我希望能够将所有图像文件缓存在/ skins /目录及其子目录中.但是,我无法完全使用正则表达式--Aracle只是完全忽略它.

如何匹配<FilesMatch>.htaccess文件中的文件夹?

干杯,
马特

regex apache .htaccess mod-expires

12
推荐指数
3
解决办法
3万
查看次数

XAMPP如何加载mod_expires

我有XAMPP,我可以在路径下看到mod_expires.so文件

... XAMPP\apache的\模块\ mod_expires.so

但是,我认为该模块没有加载有两个原因:

第一:调用phpinfo()时未列出mod_expires

第二,是我将缓存时间线添加到.htaccess文件中我得到500服务器错误

(.htaccess中的缓存代码示例

<IfModule mod_expires.c>
# Activate mod_expires for this directory
ExpiresActive on
#HTML documents are good for a week from the time they were changed
ExpiresDefault M604800 
</IfModule>
Run Code Online (Sandbox Code Playgroud)

两个问题那么:

是否存在指示模块已安装的mod_expires.so文件?

如果是,我该如何启用或激活?

如果不是,我如何在XAMPP中安装和启用?

谢谢,

xampp mod-expires

11
推荐指数
1
解决办法
9723
查看次数

使用mod_expires覆盖缓存标头

我想使用apache中的mod_expires模块设置cache-headers.我的配置看起来像这样:

<LocationMatch ^/static >
    ExpiresDefault "access plus 1 years"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

问题是,文件是由我无法控制的第三个系统生成的.这些系统提供带有以下标题的文件:

Date Mon, 24 Oct 2011 08:39:02 GMT
Cache-Control no-cache,no-store,must-revalidate
Pragma no-cache
Expires Thu, 01 Dec 1994 16:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

这些标头使得无法使用mod_expires设置缓存标头.http://httpd.apache.org/docs/2.2/mod/mod_expires.html告诉我们原因:

当Expires标头已经是服务器生成的响应的一部分时,例如,当由CGI脚本生成或从源服务器代理时,此模块不会更改或添加Expires或Cache-Control标头.

是否有任何可能的方法来规避此规则并使用mod_expires覆盖标头?

更新: 一种可能的解决方案是,为了避免此限制,仅使用mod_headers来设置缓存标头.不幸的是,这不是一个替代方案,因为必须计算这些值.

谢谢它提前.

apache mod-expires

10
推荐指数
1
解决办法
4395
查看次数

Apache:在.htaccess中为目录设置max-age或expires

我有一些内容永远不会改变的目录.

是否可以创建.htaccess文件,告诉浏览器该目录和子目录中的任何内容都可以缓存很长时间?

如果可能的话,我想在每个目录中复制相同的.htaccess文件.

如果这是可能的,你会建议max-age超过期限或两者兼而有之吗?

apache cache-control mod-expires

10
推荐指数
1
解决办法
2万
查看次数