如何设置HTTP头(用于caching控制)?

如何为我的网站启用浏览器caching? 我只是把caching控制:公开在我的头像这样的地方?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" Cache-Control:public; > 

我正在使用最新版本的XAMPP开发的最新版本的PHP。

要在HTML中使用caching控制,请使用元标记 ,例如

 <meta http-equiv="Cache-control" content="public"> 

内容字段中的值被定义为以下四个值之一。

有关Cache-Control标题的一些信息如下

HTTP 1.1。 允许的值= PUBLIC | 私人| NO-CACHE | NO-STORE。

公共 – 可以caching在公共共享caching中。
私有 – 只能caching在私有caching中。
无caching – 可能无法caching。
无存储 – 可能被caching但不存档。

指令CACHE-CONTROL:NO-CACHE指示不应使用caching的信息,而是将请求转发给原始服务器。 该指令与PRAGMA:NO-CACHE具有相同的语义。

当一个没有caching请求被发送到一个不知道是HTTP / 1.1兼容的服务器时,客户端应该包括PRAGMA:NO-CACHE和CACHE-CONTROL:NO-CACHE。 另请参阅EXPIRES。

注意:在HTTP中指定caching命令可能比在META语句中指定caching命令更好,因为它们可能会影响浏览器,但可能会caching信息的代理和其他中介。

您可以使用以下方法在PHP中设置标题 :

 <?php //set headers to NOT cache a page header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1 header("Pragma: no-cache"); //HTTP 1.0 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past //or, if you DO want a file to cache, use: header("Cache-Control: max-age=2592000"); //30days (60sec * 60min * 24hours * 30days) ?> 

请注意,使用的确切标题将取决于您的需求(如果您需要支持HTTP 1.0和/或HTTP 1.1 )

正如我写的(在http://www.williamferreira.net/blog/2011/10/04/controle-de-cache-apache/ )最好使用文件.htacces。 但是要小心你把内容留在caching中的时间。

使用:

 <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> 

其中:604800 = 7天

PS:这可以用来重置任何标题

http://www.askapache.com/htaccess/apache-speed-cache-control.html中的页面显示了这样的内容:;

 Add Cache-Control Headers This goes in your root .htaccess file but if you have access to httpd.conf that is better. This code uses the FilesMatch directive and the Header directive to add Cache-Control Headers to certain files. # 480 weeks <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=290304000, public" </FilesMatch> 

对于Apache服务器,您应该检查用于设置Expires和Cache-Control标题的mod_expires 。

或者,您可以使用Header指令自行添加Cache-Control:

 Header set Cache-Control "max-age=290304000, public" 

OWASPbuild议如下,

尽可能确保caching控制HTTP头设置为no-cache,no-store,must-revalidate,private; 并且编译HTTP标头设置为no-cache。

 <IfModule mod_headers.c> Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" Header set Pragma "no-cache" </IfModule> 

这是最好的.htaccess我已经在我的实际网站maded:

 <ifModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </ifModule> ##Tweaks## Header set X-Frame-Options SAMEORIGIN ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType text/html "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 1 month" </IfModule> ## EXPIRES CACHING ## <IfModule mod_headers.c> Header set Connection keep-alive <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$"> Header set Cache-Control "max-age=2592000, public" </filesmatch> <filesmatch "\.(jpg|jpeg|png)$"> Header set Cache-Control "max-age=1209600, public" </filesmatch> <filesmatch "\.(eot|woff|otf|ttf|svg)$"> Header set Cache-Control "max-age=2592000, public" </filesmatch> # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching <filesmatch "\.(css)$"> Header set Cache-Control "max-age=31536000, private" </filesmatch> <filesmatch "\.(js)$"> Header set Cache-Control "max-age=1209600, private" </filesmatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control "max-age=600, private, must-revalidate" </filesMatch> </IfModule> 

元caching控制标签允许Web发布者定义caching如何处理页面。 它们包括声明可以caching的内容,caching可以存储的内容,到期机制的修改以及重新validation和重新加载控制的指令。

允许的值是:

公共 – 可以caching在公共共享caching中
私有 – 只能caching在私有caching中
no-Cache – 可能不被caching
无存储 – 可能被caching但不存档

请注意区分大小写。 在您的网页源代码中添加以下元标记。 标签末尾的拼写差异是使用“/> = xml或”> = html。

  <meta http-equiv="Cache-control" content="public"> <meta http-equiv="Cache-control" content="private"> <meta http-equiv="Cache-control" content="no-cache"> <meta http-equiv="Cache-control" content="no-store"> 

来源 – > MetaTags