« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга

Создание сайта за 3999 руб.!

ПнВтСрЧтПтСбВс
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
    Популярное
XML DB - новое измерение в организации данных в Oracle

Обычная отладка, точки останова

Функция GlobalLock

InterBase и его клоны

Использование хэш-ключей в базах данных

Экспорт данных

Функция GlobalFindAtom

Отрисовка связного дерева на PHP

.NET или Кому это надо?

Работа с WinSock в Delphi.




    Архив файлов



    Сообщества



    Документация

Статьи:: Интернет технологии :: PHP :: Кэширование ваших страниц в 5 шагов


отправить ссылку другу версия для печати  Обсудить на форуме

Кэширование ваших страниц в 5 шагов



Оригинал: Posted in PHP / JavaScript by ibzi on the February 17th, 2007

Перевод: Кузьма Феськов (kuzma@russofile.ru, http://kuzma.russofile.ru)

Кэширование ваших страниц может оказаться красивым и полезным механизмом, особенно, если они генерируются средствами PHP и делают множество SQL запросов. Как только вы примените кэширование, ваш сервер тут же снизит нагрузку и перестанет съедать много памяти на генерацию страниц – он просто будет загружать их из КЭШа. Я покажу вам, как PHP может кэшировать страницы и, в дальнейшем, вы сможете тратить на это минут 5.



На данном этапе, вам понадобится знать 3 вещи. Ваш сайт генерируется с помощью PHP? Если нет, то вам, видимо, надо перестать читать этот материал. Во-вторых, вам необходимо знать, каким образом менять доступ к папкам на сайте на 777. Если вы не знаете, каким образом это делается – попытайте Google. И, наконец, вам необходимо знать полный путь до вашей home директории сайта, обычно это что-то типа /home/your_name/public_html/.

Ну, теперь приступим к PHP. Я разложил технологию на самые простые шаги, которые позволят вам довольно легко понять суть метода.

  1. В домашней директории создаем файлы .htaccess, start_cache.php, end_cache.php, а также папку с названием cache_files.

     
  2. Папке cache_files необходимо проставить атрибуты 777.

     
  3. Внутри .htaccess файла пропишите следующие строки:
    php_value auto_prepend_file /home/username/public_html/start_cache.php
    php_value auto_append_file /home/username/public_html/end_cache.php
    
    Строку /home/username/public_html/ необходимо заменить на путь к вашей домашней директории.

     
  4. В скрипт start_cache.php помещаем следующий код:
    <?php
    // раздел настроек, которые вы можете менять
    $settings_cachedir = '/home/username/public_html/cache_files/';
    $settings_cachetime = 3600; //время жизни кэша (1 час)
    
    // код
    $thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $cachelink = $settings_cachedir.md5($thispage).".html";
    if (file_exists($cachelink)) {
        $cachelink_time = filemtime($cachelink);
    
        if ((time() - $settings_cachetime) < $cachelink_time) {
            readfile($cachelink);die();
        }
    }
    
    ob_start();
    ?>
    
    Не забывайте исправлять путь /home/username/public_html/ на путь к вашей домашней директории.

     
  5. А следующий код поместите в скрипт end_cache.php:
    <?php
    $fp = fopen($cachelink, 'w');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    ob_end_flush();
    ?>
    

…вот, собственно, и все. Все ваши страницы будут кэшироваться на 3600 секунд. Этот параметр вы легко можете поменять в скрипте start_cache.php. Кэш страниц будет сохранен в папке cache_files.

P.S. Примечания от переводчика

Совершенно очевидно, что в данном случае атрибуты 777 являются определенным нарушением безопасности. В связи с чем, рекомендую вынести папку cahce_files за пределы public_html, например, поместить ее на один уровень выше. Это закроет доступ к находящимся в ней файлам пользователей вашего сайта, но никак не повлияет на работоспособность системы.

Также, у данного метода есть еще один серьезный недостаток: автор статьи складывает весь кэш в одну папку, что, при достаточном количестве страниц на вашем сайте, вызовет проблему, например, в системах *nix наблюдается достаточное замедление работоспособности при наличие в папке более чем 1000 файлов. В связи с чем, в алгоритм необходимо внести ряд изменений и раскладывать файлы по отдельным подпапкам внутри папки cache_files. Например, используя для этого первые 3-4 символа md5 КЭШа.

Для динамических ресурсов вполне возможно выбрать время кэширования в несколько (5-10) секунд или 1-2 минуты, что уже значительно снизит нагрузку на сервер, но не нанесет вреда интерактивности сайта.

Для страниц, для которых особо важна интерактивность, можно ввести исключения в .htaccess, что позволит именно им постоянно изменяться, а страницы, для которых интерактивности не является особо важным фактором, можно применять кэширование.




Рубрика: PHP




ASP.NET и немного поисковой оптимизации.

Советы

С тех пор, как появилась Альтависта, большинство посетителей стали приходить на сайты из поисковых машин. И головной боли стало больше. Теперь мало написать сайт, нужно сделать его совместимым с поисковыми ботами. Одна из тех задач, которую приходится решать — быстрая переиндексация обновлений на сайте. Поисковые роботы чаще посещают те сайты, которые чаще меняются.


Подробнее... | Рубрика: Советы | Добавлено: 30.07.2008

Protocol buffers: библиотека обмена данными для C++, Java, Python от Google.

Программирование для Web на C

Наконец-то я могу поделиться тем, чему уже давно радуюсь сам: Google открывает исходники Protocol Buffers! Что это и почему надо радоваться? Это простой и удобный способ обмена данными. Можно сказать, альтернатива XML, но гораздо менее амбициозная и (поэтому) более быстрая и компактная. Далее - перевод отрывка анонса в блоге Open Source at Google и пример использования.


Подробнее... | Рубрика: Программирование для Web на C | Добавлено: 30.07.2008

Описание VivaVisualCode.

VivaCore

В данной статье рассмотрена программа VivaVisualCode, демонстрирующая использование библиотеки VivaCore. Программа VivaVisualCode графически отображает дерево разбора для вводимого исходного кода на языке Си++.


Подробнее... | Рубрика: VivaCore | Добавлено: 29.07.2008

Остальные статьи:

JQuery: Пара сотен плагинов в одной заметке
Касание сетки
Разработка элементов управления ASP.NET на примере навигационной панели
Сохранения параметров приложения в .Net
Custom cursors в .Net
Бегун убегает от хозяина
"Битрикс" выпустил седьмую версию CMS
Выбираем систему управления сайтом
Рынок CMS в Европе или впечатления с CeBIT 2008
32 подводных камня OpenMP при программировании на Си++
Проeкт - шифровка
А что если..? (операторы if...else в C#)
Измерение скорости работы скрипта
О том как разработчики пьют кофе
Работаем с LINQ to XML
XmlSerializer - Assembly Leak без спроса


Цитата дня (все,добавить):



    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование

Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 55
Пользователей: 0