Мне нужно знать все методы кеширования, которые могут быть реализованы на веб-сайте, чтобы я мог ускорить работу. Раньше я никогда не нуждался в кешировании, поэтому я совершенно не знаю, как это сделать или даже что делать, и что-то в этом роде.
Я ищу некоторые уроки, статьи или что-нибудь полезное.
Я бы начал с этого: http://www.mnot.net/cache_docs/
Он очень глубокий, и к тому времени, когда вы закончите читать его, вы будете кэшировать в кратчайшие сроки. Однако есть несколько вещей, которые вы, возможно, захотите рассмотреть, прежде чем вникать в кеш-абизы. Такие вещи, как размещение всех ваших тегов в нижней части страницы. Сжатие как вашего CSS, так и ваших JS-файлов тоже отлично подходит.
Во всяком случае, если вы действительно хотите начать использовать кеш, я предлагаю сначала настроить заголовки HTTP.
Вот один из способов:
$ cd /path/to/webroot $ vi .htaccess
Затем в файле .htaccess поместите следующие строки:
<IfModule mod_expires.c> Header set Cache-Control "max-age=7200, public" </IfModule>
Это просто быстрый и грязный пример, который также можно сделать с помощью header () в PHP. Однако для кеша браузера имейте в виду. Если вы хотите выполнить кеширование страниц (например, сохранение вывода страницы в памяти на сервере), я рекомендую проверить эту страницу:
http://php.net/manual/en/function.ob-start.php
Удачи!
Вы можете использовать функцию php Header()
для кэширования одного файла.
$expire_time = 3600 * 24 * 30; //30 days header('Expires: ' . gmdate('D, d MYH:i:s ', time() + $expire_time) . 'GMT');
Альтернативно, в некоторых случаях лучше использовать директивы в файле .htaccess
.
<IfModule mod_headers.c> # 3 month <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=7257600, public" </FilesMatch> # 2 DAYS <FilesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </FilesMatch> # 45 MIN <FilesMatch "\.(html|htm)$"> Header set Cache-Control "max-age=2700, public, must-revalidate" </FilesMatch> # No cache <FilesMatch "\.(pl|php|cgi|spl)$"> Header unset Cache-Control Header unset Expires Header unset Last-Modified FileETag None Header unset Pragma </FilesMatch> </IfModule>
Для углубленного изучения вы можете прочитать это Ускорение сайтов с кешированием htaccess .
Вы можете просмотреть memcached, если у вас несколько серверов, на основе пар ключ-значение для быстрого доступа к данным из распределенной памяти (вроде).
Вы также можете хранить менее часто изменяемые страницы на диске и обслуживать их, не создавая их каждый раз. Это простейшая система кэширования, но работает.
Существует множество решений для кэширования, таких как: Zend , APC и т. Д.
Также см., Если вы можете настроить свои dbms в первую очередь. В основном это основная бутылочка.
Для методов кэширования ВНУТРИ кода вашего сайта вы можете взглянуть на компонент HTTP-кеширования проекта Symfony. Они также предоставляют обширную главу в своей документации, объясняющую, почему они выбирают кеширование HTTP, а также подробно объясняют все параметры кэширования. Вы можете найти главу здесь: http://symfony.com/doc/current/book/http_cache.html Это, безусловно, хорошее чтение.
Еще один простой вариант – установить кеш-код opcode / PHP-ускоритель, но для этого требуется доступ к вашему веб-серверу.
Какой-то мягкий ответ, который предлагает обзор. Существует два типа кэширования:
Кэширование на стороне сервера предполагает сохранение результата дорогостоящих или трудоемких операций (например, вызов БД или внешнего веб-сервиса) где-то на стороне сервера. Типичное хранилище включает в себя кеш памяти, такой как Memcached или простое хранилище файловой системы.
Обычно я создаю репозиторий или объект службы, который объединяет мой доступ к данным и механизм кэширования. Например, экземпляр Zend_Cache
может быть создан с использованием Zend_Cache::factory($frontend, $backend)
, где $frontend
и $backend
являются ассоциативными массивами, описывающими механизм кэширования, большая часть которых обычно указывается в config/application.ini
. Затем класс репозитория / службы проверяет кеш, прежде чем инициировать дорогостоящую операцию. Если кэш не содержит сохраненные данные, выполняется дорогостоящая операция, и результат сохраняется в кеше. Полную информацию о самом кешировании можно найти в разделе Zend_Cache руководства .
Кэширование на стороне клиента предполагает указание браузерам – и посредникам, таким как прокси – хранить определенные ресурсы, такие как изображения, javascripts и таблицы стилей – на стороне клиента. Обычно это связано с отправкой правильных заголовков кеша, описывающих желаемое поведение. Это может быть реализовано в каждой папке с использованием директив .htaccess или по запросу, помещая правильные заголовки в объект $response
.
Использование как серверной, так и клиентской стороны может принести значительный прирост производительности для вашего приложения.
Как я уже сказал, это был мягкий ответ. Довольный откорм с дополнительной спецификой по запросу.