如何为我的网站启用浏览器缓存?我要把cache-control:public放在header的某个地方吗?

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

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


当前回答

http://www.askapache.com/htaccess/apache-speed-cache-control.html上的页面建议使用这样的方法:

添加Cache-Control头 这是你的根。htaccess文件,但如果你有访问 Httpd.conf更好。 这段代码使用FilesMatch指令和Header指令向某些文件添加Cache-Control头文件。 # 480周 < FilesMatch " \。(ico pdf | | flv | jpg | jpeg | png | gif | js | css | swf) $ " > “max-age=290304000, public” < / FilesMatch >

其他回答

http://www.askapache.com/htaccess/apache-speed-cache-control.html上的页面建议使用这样的方法:

添加Cache-Control头 这是你的根。htaccess文件,但如果你有访问 Httpd.conf更好。 这段代码使用FilesMatch指令和Header指令向某些文件添加Cache-Control头文件。 # 480周 < FilesMatch " \。(ico pdf | | flv | jpg | jpeg | png | gif | js | css | swf) $ " > “max-age=290304000, public” < / FilesMatch >

这是我在实际网站中使用过的最好的。htaccess:

<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>
    # 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>

要在HTML中使用缓存控制,您可以使用元标记,例如。

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

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

Cache-Control头的一些信息如下

HTTP 1.1. Allowed values = PUBLIC | PRIVATE | NO-CACHE | NO-STORE. Public - may be cached in public shared caches. Private - may only be cached in private cache. No-Cache - may not be cached. No-Store - may be cached but not archived. The directive CACHE-CONTROL:NO-CACHE indicates cached information should not be used and instead requests should be forwarded to the origin server. This directive has the same semantics as the PRAGMA:NO-CACHE. Clients SHOULD include both PRAGMA: NO-CACHE and CACHE-CONTROL: NO-CACHE when a no-cache request is sent to a server not known to be HTTP/1.1 compliant. Also see EXPIRES. Note: It may be better to specify cache commands in HTTP than in META statements, where they can influence more than the browser, but proxies and other intermediaries that may cache information.

正如我所写的,最好使用.htaccess文件。但是要注意将内容保留在缓存中的时间。

Use:

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

其中:604800 = 7天

PS:这可以用来重置任何头部

你可以在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)