Чтение RSS каналов

Форум

Открыть Ответить

Кеширование блоков с sql-запросами для slaed cms

0

0
1
08.05.2012 18:41:2309.05.2012 18:47:49
В продолжение темы о кешировании блоков для системы slaed cms.


Плюсы:

Минимум изменнений в движке
Уменьшение скорости генерации страниц сайта
Уменьшение нагрузки на сервер

Минусы:

Думаю нет минусов )


Совместимость со всеми версиями слаед при наличии папки config/cache с правами 777


В файл function/function.php добавляем три новые функции:

/* запись кеширования html*/
function create_cache($prefix, $cache_text) {
$filename = "config/cache/".$prefix.".tmp";
$fp = fopen( $filename, 'wb+' );
fwrite( $fp, $cache_text );
fclose( $fp );
@chmod( $filename, 0666 );
return FALSE;
}

/* вызов кеширования html*/
function call_cache($prefix) {
$filename = "config/cache/".$prefix .".tmp";
if(file_exists($filename))return @file_get_contents( $filename );
return FALSE;	
}
/* удалнение кеша*/
function clear_cache($cache_area = false) {

$fdir = opendir('config/cache' );
while ( $file = readdir( $fdir ) ) {
if( $file != '.' and $file != '..' and $file != '.htaccess') {
if( $cache_area ) {
if( strpos( $file, $cache_area ) !== false ) @unlink( 'config/cache/'. $file );
} else {
@unlink( 'config/cache/'. $file );
}}}
closedir($fdir);}

Пример кеширования для блока block-news.php

<?php
# Copyright © 2005 - 2011 SLAED
# Website: http://www.slaed.net

if (!defined("BLOCK_FILE")) {
	header("Location: ../index.php");
	exit;
}

/* Начало изменений */
$content = call_cache("block-news");//вызов кеша
//если нет кеша создам новый
if(!$content){
/* конец изменений */

global $prefix, $db;
$strip = 25;
$result = $db->sql_query("SELECT sid, title FROM ".$prefix."_news WHERE time <= now() AND status!='0' ORDER BY time DESC LIMIT 5");
while(list($sid, $title) = $db->sql_fetchrow($result)) {
	$linkstrip = cutstr($title, $strip);
	$content .= "<table cellspacing=\\"0\\" cellpadding=\\"1\\" border=\\"0\\"><tr><td><img src=\\"".img_find("all/news.png")."\\" title=\\"".$title."\\"></td><td><a href=\\"news-view-.html".$sid."\\" title=\\"".$title."\\">".$linkstrip."</a></td></tr></table>";
}

/* Начало изменений */
//записываем в кеш
create_cache("block-news",$content);
}
/* Начало изменений */


?>	




Далее в файле modules/news/admin/index.php в функции function news_save

Над строкой

header("Location: ".$admin_file.".php?op=news");


Вставляем

clear_cache("block-news");//удаляем кеш только для блока block-news.php


Или удаляем все из папки config/cache

clear_cache();


Итог: -1 запрос к DB

Источник http://pro-script.ru/index.php?name=news&op=view&id=406
3.76

3.76
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь