Как установить заголовки HTTP (для управления кешем)?
Как включить кэширование браузера для моего сайта? Я просто помещаю 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;
>
Я использую последнюю версию PHP, разрабатываемую на последней версии XAMPP.
8 ответов:
чтобы использовать cache-control в HTML, вы используете мета-тег, например,
<meta http-equiv="Cache-control" content="public">
значение в поле "содержание" определяется как одно из четырех значений ниже.
информацию о
Cache-Control
заголовок выглядит следующим образомHTTP 1.1. Допустимые значения = общественная | частная | без кэша | нет-магазине.
Public-может кэшироваться в общедоступных общих кэшах.
Private - может быть кэширован только в частном кэше.
No-Cache - не может быть кэширован.
No-Store - может кэшироваться, но не архивироваться.директива CACHE-CONTROL: NO-CACHE указывает, что кэшированная информация не должна использоваться и вместо этого запросы должны быть перенаправлены на исходный сервер. Эта директива имеет ту же семантику, что и PRAGMA:NO-CACHE.
клиенты должны включить как PRAGMA: NO-CACHE, так и CACHE-CONTROL: NO-CACHE, когда запрос no-cache отправляется на сервер, о котором неизвестно HTTP / 1.1 совместимый. Также см. истекает срок действия.
Примечание: возможно, лучше указать команды кэша в HTTP, чем в мета-операторах, где они могут влиять больше, чем браузер, но прокси и другие посредники, которые могут кэшировать информацию.
вы можете установите заголовки в 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. Однако остерегайтесь времени, когда вы оставляете содержимое в кэше.
использование:
<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 предлагает использовать что-то вроде этого:
Добавить Заголовки Управления Кэшем
Это идет в корень .htaccess файл, но если у вас есть доступ к httpd.conf, который лучше.
Этот код используется директива FilesMatch и директива заголовка, чтобы добавить заголовки Cache-Control, чтобы определенные файлы.# 480 weeks <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=290304000, public" </FilesMatch>
для сервера Apache, вы должны проверить mod_expires для установки истекает и заголовки управления кэшем.
кроме того, вы можете использовать заголовок директива для добавления Cache-Control самостоятельно:
Header set Cache-Control "max-age=290304000, public"
Это самое лучшее
.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>
OWASP рекомендует следующее,
по возможности обеспечить кэш-контроль заголовка HTTP-это установить без кэша, нет-магазине, необходимо подтвердить, частная; и что ПРАГМА HTTP-заголовка устанавливается без кэша.
<IfModule mod_headers.c> Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" Header set Pragma "no-cache" </IfModule>
мета-тег управления кэшем позволяет веб-издателям, чтобы определить, как страницы должны быть обработаны по схронам. Они включают директивы для объявления того, что должно быть кэшируемым, что может храниться в кэшах, модификации механизма истечения срока действия, а также повторную проверку и перезагрузите управления.
допустимые значения:
Public - может кэшироваться в общедоступных общих кэшах
Private - может быть кэширован только в private cache
no-Cache - не может быть кэширован
нет-магазин - может быть кэширован, но не архивируютсяпожалуйста, будьте осторожны с чувствительностью к регистру. Добавьте следующий мета-тег в исходный код страницы. Разница в написании в конце тега либо вы используете "/ > = 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">
источник-> метатеги