1. sanj - 03 Июня, 2007 - 22:05:19 - перейти к сообщению
Я изучаю сейчас сайтостроение и читаю книги по этой теме и много информации идет о кеше, а что это такое нигде не пишут. Скажите пожалуйста что такое кеш и что он делает.
2. kamikadze - 03 Июня, 2007 - 22:16:15 - перейти к сообщению
Зачастую кеш это страници либо у юзера на компе, либо это сгенерированые страници на серваке! зАчастую в крупных админках делается папка для кеша откуда и берутся файлы для вывода
3. sanj - 03 Июня, 2007 - 22:23:42 - перейти к сообщению
Как я понял это копирование в память. Это что то типа proxy?
А как этот кеш реализавать в коде?
А как этот кеш реализавать в коде?
4. evgenijj - 03 Июня, 2007 - 22:34:39 - перейти к сообщению
sanj пишет:
Я изучаю сейчас сайтостроение и читаю книги по этой теме и много информации идет о кеше, а что это такое нигде не пишут. Скажите пожалуйста что такое кеш и что он делает.
Допустим, ползователь набирает в адресной строке браузера адрес http://someserver.com/support.html. Сервер находит у себя файл support.html и отдает его клиенту. Пользователь запросит еще несколько страниц и потом вернется на страницу support.html. Браузер не будет снова запрашивать эту страницу у сервера, а возьмет ее из кэша. Т.е. этот файл (support.html) браузер сохранят на винчестере пользователя. Аналогичную задачу решает Proxy-сервер.
Это для статичных страниц. По поводу динамических - нет смысла их кэшировать, это даже вредно. Ведь мы не знаем, КАК скрипт генерирует эту страницу. И даже если запрашивается вроде бы один и тот же файл http://someserver[dot]com/support.php нельзя сказать, что скрипт сформирует одинаковый HTML (он может зависеть, например, от времени суток).
Теперь по поводу кэширования средствами PHP. Зная, что данная страница, которая генерится скриптом, изменяется раз в сутки (например, ежедневное добавление новостей в раздел "Новости компании") мы можем, один раз сформировав HTML, сохранить его в файл, и отдавать пользователю, читая страницу из файла, а не формируя каждый раз динамически (т.е. выполняя запросы к БД и т.п.) Тем самым снижая нагрузку на сервер.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- // директория для хранения кэшированных страниц
- $cachedir = './cache/';
- //время жизни кэша (60 минут)
- $cachetime = 3600;
- $thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
- // Если файл страницы существует
- {
- // получаем содержимое страницы из кэша
- }
- else
- {
- // формируем страницу
- $content = get_page_content( $_GET["id_page"] );
- // записываем страницу в кэш
- }
- echo $content;