+1.19
Рейтинг
1.70
Сила

Andrey Superstar

if (Config::Get('view.tinymce')) {
	$this->oJevix->cfgSetAutoBrMode(!preg_match('/^<p([^>]*)>(.+)<\/p>$/isu', $sText));
}

хуже не будет :D
  • avatar avadim
  • 2
Вообще урл парсится так:
site.com/action/event/param0/param1/param2/...

Соответственно доступ к элементам урла:
action -> Router::getAction()
event -> Router::getActionEvent()
paramN -> $this->getParam(N)
  • avatar avadim
  • 0
Опять невнятный вопрос. Какой подстраницы? Где?
Если речь о том, как получить урл текущей страницы в шаблоне то $oPage->getUrl()
  • avatar maxyc
  • 1
Зачем писать весь этот бред? делаем проще, лол =)
в index.php после
21: header('Content-Type: text/html; charset=utf-8');

пишем
22: ob_start('ob_gzhandler');


и готово. что касается самих js/css файлов.


тут тоже ничего страшного нет:
создаем файл index2.php и в нем пишем следующее:
<?php
    ob_start('ob_gzhandler');
    $file_type = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?')-3, 3);
    if($file_type == 'css') $file_type = 'text/css';
    elseif($file_type == '.js') $file_type = 'text/javascript';
    else $file_type = 'text/plain';

    if(file_exists(getcwd(). $_SERVER['REQUEST_URI']))
        $output = file_get_contents(getcwd(). $_SERVER['REQUEST_URI']);
    else die(header('location: /'));

    // ну и конечно же кеш для статики
    $expires = 3600*24*30;
    header("Pragma: public");
    header("Cache-Control: maxage=".$expires);
    header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
    header('Content-type: '.$file_type);

    die($output); // отдаем скриптом, чтобы ob_gzhandler смог сжать выход.
сюда можно еще многое добавить, например вырезать из output пустые строки и/или перевод каретки и/или комментарии:

$output = preg_replace('#\/\*(.*)\*\/#', '', $output);
$output = preg_replace('#\/\/(.*)#', '', $output); 
в данном виде эти две строки врятли будут работать, я лишь хотел показать что я имею ввиду. просто нет времени писать сложные регулярки, кто силен тот можете отписаться

для того чтобы вся эта кострукция заработала, нам необходимо весь css, js траффик пустить через index2.php. Делается это так:
RewriteRule ^(.*)\.(css|js)$    index2.php [L]

Вставить необходимо сразу под
RewriteEngine On
и вот что у нас получилось:


есть еще один момент чтобы ускорить работу сайта. в .htaccess можно добавить
ExpiresActive On
ExpiresDefault a5356800
ExpiresByType image/x-icon image/jpeg image/gif image/png a5356800
ExpiresByType application/x-javascript a5356800
ExpiresByType text/css a5356800
ExpiresByType text/html a5356800
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
   ExpiresActive Off
</FilesMatch>

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

p.s. и, уважаемые программисты, не ставьте знак ?> в конце файла, это сэкономит не только размеры файлов, но и многие часы дебага

p.s.s в данный момент подготавливаю большой модуль «галерея изображений» ждите.
Нашлось решение проблемы.
Router.class.php
protected function __construct() {
		$this->LoadConfig();		
		
		if (get_magic_quotes_gpc()) {
			func_stripslashes($_REQUEST);
		}
		
		$sReq=preg_replace("/\/+/",'/',$_SERVER['REQUEST_URI']);		
		$sReq=preg_replace("/^\/(.*)\/?$/U",'\\1',$sReq);		
		$sReq=preg_replace("/^(.*)\/\?.*$/U",'\\1',$sReq);
		
		self::$sPathWebCurrent = DIR_WEB_ROOT."/".$sReq;
			
		$aRequestUrl = ($sReq=='') ? array() : explode('/',$sReq);		

if (@$aRequestUrl[1])
		{
			$aRequestUrl[1] = urldecode($aRequestUrl[1]);	
		}
		for ($i=0;$i<SYS_OFFSET_REQUEST_URL;$i++) {
			array_shift($aRequestUrl);
		}		
		self::$sAction=array_shift($aRequestUrl);
		self::$sActionEvent=array_shift($aRequestUrl);
		self::$aParams=$aRequestUrl;
	}

ActionProfile.class.php
protected function RegisterEvent() {			
		$this->AddEventPreg('/^[^\/]+$/i','/^(whois)?$/i','EventWhois'); 
		$this->AddEventPreg('/^[^\/]+$/i','/^favourites$/i','/^(page(\d+))?$/i','EventFavourite');
	} 
В корне в .htaccess добавить:

AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

Скачать 7-zip, заархивировать в gzip c максимальным сжатием все css, js и положить в те же папки (прямо рядом с несжатыми css и js). У кого поддерживается gzip — тем будет заархивированный вариант отдаваться. Плюс сжал даже до base64 все js. Суммарно раза в 3 уменьшился вес css+js.