如何为我的网站启用浏览器缓存?我是否只是将cache-control:public这样放在标题中?
<!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。
如何为我的网站启用浏览器缓存?我是否只是将cache-control:public这样放在标题中?
<!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。
Answers:
要在HTML中使用缓存控制,请使用meta标签,例如
<meta http-equiv="Cache-control" content="public">
内容字段中的值定义为以下四个值之一。
Cache-Control
标头上的一些信息如下
HTTP 1.1。允许值= PUBLIC | 私人| NO-CACHE | 没有商店。
公共-可能会缓存在公共共享缓存中。
专用-只能缓存在专用缓存中。
无缓存-可能不会被缓存。
无存储-可以缓存但不能存档。指令CACHE-CONTROL:NO-CACHE指示不应使用缓存的信息,而应将请求转发到原始服务器。该指令与PRAGMA:NO-CACHE具有相同的语义。
当向服务器发送不缓存请求时,客户端应同时包括PRAGMA:NO-CACHE和CACHE-CONTROL:NO-CACHE。另请参阅EXPIRES。
注意:在HTTP中指定缓存命令可能比在META语句中指定缓存命令更好,因为在META语句中,它们可能比浏览器影响更大,但是代理和其他可能会缓存信息的中间媒介。
<meta>
并且一直是指定缓存的一种糟糕且易变的方式。
您可以 使用以下方法在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://www.askapache.com/htaccess/apache-speed-cache-control.html上的页面建议使用以下内容:
添加缓存控制标头
这放在您的根.htaccess文件中,但是如果您可以访问httpd.conf,那更好。
此代码使用FilesMatch指令和Header指令将Cache-Control Headers添加到某些文件。# 480 weeks <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=290304000, public" </FilesMatch>
cache
和no-cache
),则顺序无关紧要。max-age
并且public
不要冲突,因此顺序无关紧要。
Header
指令,因此必须启用mod_headers
。
a2enmod
或建立从/etc/apache2/mods-available/headers.load
到的符号链接/etc/apache2/mods-enabled/headers.load
。
这是.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>
<filesMatch "\.(x?html?|php)$">
以避免缓存静态HTML页面。其余文件匹配都可以。
<filesmatch "\.(eot|woff|otf|ttf|svg)$">
。
css
和js
私人,如果你有代理缓存。在您的链接中,我找不到任何建议。大多数CDN建议您缓存这些值。
对于Apache服务器,应检查mod_expires以设置Expires和Cache-Control标头。
另外,您可以使用Header指令自行添加Cache-Control:
Header set Cache-Control "max-age=290304000, public"
meta缓存控制标签允许Web发布者定义缓存应如何处理页面。它们包括用于声明应缓存的内容,可以由缓存存储的内容,修改过期机制以及重新验证和重新加载控件的指令。
允许的值为:
公共-可能被缓存在公共共享缓存中
私有-可能仅被缓存在私有缓存中
无缓存-可能没有缓存
无存储-可能被缓存但未被存档
请注意区分大小写。在您的网页源中添加以下元标记。标签末尾的拼写差异是使用“ /> = 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