Каковы методы кэширования, которые могут быть реализованы при разработке динамического веб-сайта?

Мне нужно знать все методы кеширования, которые могут быть реализованы на веб-сайте, чтобы я мог ускорить работу. Раньше я никогда не нуждался в кешировании, поэтому я совершенно не знаю, как это сделать или даже что делать, и что-то в этом роде.

Я ищу некоторые уроки, статьи или что-нибудь полезное.

Я бы начал с этого: 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-ускоритель, но для этого требуется доступ к вашему веб-серверу.

Какой-то мягкий ответ, который предлагает обзор. Существует два типа кэширования:

  1. Серверный
  2. Сторона клиента

Кэширование на стороне сервера предполагает сохранение результата дорогостоящих или трудоемких операций (например, вызов БД или внешнего веб-сервиса) где-то на стороне сервера. Типичное хранилище включает в себя кеш памяти, такой как Memcached или простое хранилище файловой системы.

Обычно я создаю репозиторий или объект службы, который объединяет мой доступ к данным и механизм кэширования. Например, экземпляр Zend_Cache может быть создан с использованием Zend_Cache::factory($frontend, $backend) , где $frontend и $backend являются ассоциативными массивами, описывающими механизм кэширования, большая часть которых обычно указывается в config/application.ini . Затем класс репозитория / службы проверяет кеш, прежде чем инициировать дорогостоящую операцию. Если кэш не содержит сохраненные данные, выполняется дорогостоящая операция, и результат сохраняется в кеше. Полную информацию о самом кешировании можно найти в разделе Zend_Cache руководства .

Кэширование на стороне клиента предполагает указание браузерам – и посредникам, таким как прокси – хранить определенные ресурсы, такие как изображения, javascripts и таблицы стилей – на стороне клиента. Обычно это связано с отправкой правильных заголовков кеша, описывающих желаемое поведение. Это может быть реализовано в каждой папке с использованием директив .htaccess или по запросу, помещая правильные заголовки в объект $response .

Использование как серверной, так и клиентской стороны может принести значительный прирост производительности для вашего приложения.

Как я уже сказал, это был мягкий ответ. Довольный откорм с дополнительной спецификой по запросу.