How to set HTTP headers (for cache-control)?

匿名 (未验证) 提交于 2019-12-03 01:55:01

问题:

How to enable browser caching for my site? Do I just put cache-control:public somewhere up in my header like this?

ache-Control:public; >

I am using the latest version of PHP developing on the latest version of XAMPP.

回答1:

To use cache-control in HTML, you use the meta tag, e.g.

The value in the content field is defined as one of the four values below.

Some information on the Cache-Control header is as follows

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.



回答2:

You can set the headers in PHP by using:

Note that the exact headers used will depend on your needs (and if you need to support HTTP 1.0 and/or HTTP 1.1)



回答3:

As I wrote (in http://www.williamferreira.net/blog/2011/10/04/controle-de-cache-apache/) is best to use the file .htacces. However beware of the time you leave the contents in the cache.

Use:

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

Where: 604800 = 7 days

PS: This can be used to reset any header



回答4:

The page at http://www.askapache.com/htaccess/apache-speed-cache-control.html suggests using something like this:

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  Header set Cache-Control "max-age=290304000, public"


回答5:

For Apache server, you should check mod_expires for setting Expires and Cache-Control headers.

Alternatively, you can use Header directive to add Cache-Control on your own:

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


回答6:

This is the best .htaccess I have used in my actual website:

 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.*   ##Tweaks## Header set X-Frame-Options SAMEORIGIN  ## EXPIRES CACHING ##  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"  ## EXPIRES CACHING ##       Header set Connection keep-alive              Header set Cache-Control "max-age=2592000, public"              Header set Cache-Control "max-age=1209600, public"              Header set Cache-Control "max-age=2592000, public"          # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching              Header set Cache-Control "max-age=31536000, private"              Header set Cache-Control "max-age=1209600, private"              Header set Cache-Control "max-age=600, private, must-revalidate"       


回答7:

OWASP recommends the following,

Whenever possible ensure the cache-control HTTP header is set with no-cache, no-store, must-revalidate, private; and that the pragma HTTP header is set with no-cache.

     Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"     Header set Pragma "no-cache"


回答8:

The meta cache control tag allows Web publishers to define how pages should be handled by caches. They include directives to declare what should be cacheable, what may be stored by caches, modifications of the expiration mechanism, and revalidation and reload controls.

The allowed values are:

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

Please be careful about case sensitivity. Add the following meta tag in the source of your webpage. The difference in spelling at the end of the tag is either you use " /> = xml or "> = html.

    

Source-> MetaTags



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!