Intereting Posts
Как заголовки работают с выходной буферизацией в PHP? Передача значения GET из формы HTML в Twitter API 1.1 PHP Как загрузить изображения в базу данных MySQL с помощью PHP-кода Hilighting Текущая вкладка навигации Использование URL в PHP Как вы запрещаете людям переходить на страницу, которая должна использоваться как страница входа? PHP: if (! $ Val) VS if (empty ($ val)). Есть ли разница? Как передать переменные на странице PHP на другую страницу без использования формы? Проверка симптомов с помощью php-mysql У меня есть строка с "\ u00a0", и мне нужно заменить ее на "" str_replace не удается Создайте обратную ссылку для внешнего издателя для ссылки на мой сайт изображение с изображениями, используя собственный формат http-адаптера Как загрузить LARGE-файлы на YouTube Экранирование символов, таких как $ и% | MySQL и PHP Уведомление о неопределенном значении PHP при чтении массива из файла cookie Что неожиданный T_VARIABLE в PHP?

Кэширование вывода HTML с помощью PHP

Я хотел бы создать кеш для своих php-страниц на моем сайте. Я нашел слишком много решений, но я хочу сценарий, который может генерировать HTML-страницу из моей базы данных ex:

У меня есть страница для категорий, которая захватывает все категории из БД, поэтому сценарий должен иметь возможность генерировать HTML-страницу сортировки: my-categories.html. то, если я выберу категорию, я должен получить страницу my-x-category.html и т. д. и т. д. для других категорий и подкатегорий.

Я вижу, что некоторые веб-сайты имеют URL-адреса, такие как: wwww.the-web-site.com/the-page-ex.html

хотя они динамичны.

Большое спасибо за помощь

Related of "Кэширование вывода HTML с помощью PHP"

проверить функцию ob_start ()

ob_start(); echo 'some_output'; $content = ob_get_contents(); ob_end_clean(); echo 'Content generated :'.$content; 

Вы можете получить URL-адреса, подобные этому, используя переписывание URL-адресов. Например: для apache, см. Mod_rewrite

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

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

Ручное кэширование (создание HTML и сохранение его в файле) может быть не самым эффективным способом, но если вы хотите пойти по этому пути, я рекомендую следующее (вырванное из простого тестового приложения, которое я написал для этого):

 $cache_filename = basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING']; $cache_limit_in_mins = 60 * 32; // this forms 32hrs // check if we have a cached file already if ( file_exists($cache_filename) ) { $secs_in_min = 60; $diff_in_secs = (time() - ($secs_in_min * $cache_limit_in_mins)) - filemtime($cache_filename); // check if the cached file is older than our limit if ( $diff_in_secs < 0 ) { // it isn't, so display it to the user and stop print file_get_contents($cache_filename); exit(); } } // create an array to hold your HTML output, this is where you generate your HTML $output = array(); $output[] = '<table>'; $output[] = '<tr>'; // etc // Save the output as manual cache $file = fopen ( $cache_filename, 'w' ); fwrite ( $file, implode($output_final,'') ); fclose ( $file ); print implode($output_final,''); 

Я использую APC для всего моего кэширования PHP (на сервере Apache)

Если вы не возражаете против фреймворков, попробуйте использовать Zend_Cache Zend Frameworks. Он довольно гибкий, и (в отличие от некоторых модулей инфраструктуры) легко реализуется.

Может использовать Cache_lite из PEAR:

Подробности здесь http://mahtonu.wordpress.com/2009/09/25/cache-php-output-for-high-traffic-websites-pear-cache_lite/

Я думал с точки загрузки базы данных и взимал плату за пропускную способность и скорость загрузки. У меня есть несколько страниц, которые вряд ли будут меняться годами (я знаю, что легко использовать систему CMS на основе базы данных). В отличие от США, здесь стоимость полосы пропускания может быть высокой. У кого-нибудь есть какие-либо взгляды на это: создавать ли htmal-страницы или динамические (php, asp.net). Ссылки на страницы будут храниться в базе данных в любом случае.

По-моему, это лучшее решение. Я использую этот файл для кеша JSON для своего приложения для Android. Его можно просто использовать в других файлах PHP. Он оптимизирует размер файла от ~ 1mb до ~ 163kb (gzip) .

введите описание изображения здесь

Создайте папку cache в своем каталоге

Затем создайте файл cache_start.php и вставьте этот код

 <?php header("HTTP/1.1 200 OK"); //header("Content-Type: application/json"); header("Content-Encoding: gzip"); $cache_filename = basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING']; $cache_filename = "./cache/".md5($cache_filename); $cache_limit_in_mins = 60 * 1; // It's one hour if (file_exists($cache_filename)) { $secs_in_min = 60; $diff_in_secs = (time() - ($secs_in_min * $cache_limit_in_mins)) - filemtime($cache_filename); if ( $diff_in_secs < 0 ) { print file_get_contents($cache_filename); exit(); } } ob_start("ob_gzhandler"); ?> 

Создайте cache_end.php и вставьте этот код

 <?php $content = ob_get_contents(); ob_end_clean(); $file = fopen ( $cache_filename, 'w' ); fwrite ( $file, $content ); fclose ( $file ); echo gzencode($content); ?> 

Затем создайте, например, index.php (файл, который вы хотите кэшировать)

 <?php include "cache_start.php"; echo "Hello Compress Cache World!"; include "cache_end.php"; ?>