Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (24)

Лучшие ответы пользователя

Все ответы (24)
  • Как добавить метод в стандартный объект JavaScript?

    NaN
    @NaN
    Object.defineProperty(Object.prototype, 'flip', {
    
       value: function(){},
       enumerable: false,
    
    });
    Ответ написан
    Комментировать
  • PreviousSibling и его...баг?

    NaN
    @NaN
    это нормально для всего кроме IE.
    function get_previoussibling(n)
    {
    x=n.previousSibling;
    while (x.nodeType!=1)
      {
      x=x.previousSibling;
      }
    return x;
    }

    www.w3schools.com/dom/prop_element_previoussibling.asp
    Ответ написан
    Комментировать
  • Как отключить логирование root cron jobs в /var/log/syslog (и вообще куда-либо) в ubuntu 14.04 lts 64 minimal?

    NaN
    @NaN Автор вопроса
    решение:
    /etc/rsyslog.d/50-default.conf
    -
    *.*;auth,authpriv.none -/var/log/syslog
    +
    *.*;auth,authpriv.none;cron.none -/var/log/syslog

    service rsyslog restart
    Ответ написан
    Комментировать
  • Как передать массив в url?

    NaN
    @NaN
    есть ли вариант какой то не строковый?

    GET это строка. Причем еще и с ограничением по длине. Разным.
    stackoverflow.com/questions/417142/what-is-the-max...

    У вас правильный вариант.
    Ответ написан
    1 комментарий
  • Подключение php файла вместо js как скрипт?

    NaN
    @NaN
    Требуется на самом деле часто много для чего. Например для своего сборщика скриптов, по сложности, отличного от хомпэйджных и лэндинговых проектов.
    Но все предложенные варианты плохи "дёрганием" php в любом случае.
    Лучше учите рерайты nginx.
    Привожу пример, как у меня работает сборщик scss/sass на php для конечного .css (тоже будет и для .js) каждого из шаблонов проекта:
    nginx:
    somehost.conf:
    location ~* ^/(.*)/styles/css/compiled/compile.css$ {
    		
    			set $nocache 'no';
    			
    			set $ccontrol "max-age=31536000";
    			
    			if ($arg_dev = 'yes'){
    
    				set $nocache 'yes';
    				
    				set $ccontrol "no-store,no-cache,must-revalidate";
    			
    			}	
      
    			add_header Cache-Control $ccontrol;
    			
    			if (!-f /home/dev/dev.test/$1/styles/css/compiled/compile.css){
    			
    				set $nocache 'yes';
    			
    			}
    			
    			if ($nocache = 'yes'){
    
    				rewrite ^(.*)(styles/css/compiled/compile.css)$ $1styles/css/virtual/compile.css;
    			
    			}
    			
    
    		
    			access_log off;
    			
    			log_not_found off;
    			
    			error_log off;
    			
    
    		
    		}
    		
    		location ~* ^/(.*)/styles/css/virtual/compile.css$ {
    		
    		
    			access_log off;
    			
    			log_not_found off;
    			
    			error_log off;
    		
    			proxy_pass http://unix:/var/run/scss.sock;
    			
    			proxy_store off;
    			
    	
    		}

    nginx:
    scss.conf:
    server {
    	
    	listen unix:/var/run/scss.sock;
    	
    	access_log off;
    	
    	error_log /var/log/nginx/less.error.log;
    	
    	root   /home/dev/dev.test; 
    	
    
    
    	location ~* ^/(.*)/styles/css/compiled/compile.css$ {
    		
    		alias  /home/dev/dev.test/$1/styles/css/compile.css;
    
    		access_log off;
    
    		log_not_found off;
    
    		error_log off;
    
    		expires max;
    
    	}
    	
    	#обратите внимание на путь /virtual/ которого нету. Именно на него "попадаем" из внешнего конфига в случае промаха по кэшу
    
    	location ~* ^/(.*)/styles/css/virtual/compile.css$ {
    			
    	
    	    fastcgi_pass backend_m;
    	    # это ваш php файл
                fastcgi_index /scsscompiler/csscompile.php; 
                include fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME   $document_root/scsscompiler/csscompile.php;
                fastcgi_param   CSS_PATH          $1;
                fastcgi_param   CONTENT_TYPE      text/css;
    	
    	}	
    	
    	location ~ /\.ht {
    		deny all;
    	}
    }

    csscompiler.php
    обратите внимание на $_SERVER['CSS_PATH']. В неё передаем путь к файлам как fastcgi_param, у вас это может быть всё что угодно нужное.
    <?php 
    $pathroot = $_SERVER['DOCUMENT_ROOT'].'/'.$_SERVER['CSS_PATH'];
    
    if (is_dir($pathroot)){
    	
    	header('Content-Type: text/css');
    	
    	$files = [
    	//'../../styles/css/dropdown-enc.css'
    	];
    	
    	$sass = new Sass();
    	
    	$x = $sass->compile_file('../../styles/scss/_out.scss');
    	
    	
    	foreach($files as $file){
    		
    		if (file_exists($file)) $x .= PHP_EOL.file_get_contents($file);
    		
    	}
    
    	
    		$file = $pathroot.'/styles/css/compiled/compile.css';
    
    		$dir = $pathroot.'/styles/css/compiled';
    
    		if (!is_dir($dir)) mkdir($dir,0755,true);
    
    		file_put_contents($file,$x);
    		
    		$time = filemtime($file);
    
    		$etag = dechex($time).'-'.dechex(filesize($file));
    
    		header('ETag:"'.$etag.'"');
    	
    
    	
    	header('Last-Modified:'.gmdate('D, d M Y H:i:s', $time).' GMT');
    
    	echo $x;
    
    } else {
    	
    
    	header('Content-Type: text/css');
    	
    	echo '/* SASS CSS ERROR: no dir at: ',$pathroot,' */';
    	
    } 
    
    ?>

    Т.е. теперь при первом запросе отрабатывает 1 раз php, далее, если нет изменений и нужно максимально кешировать статику, работает только nginx.
    $arg_dev в первом конфиге для отключения кеширования на время разработки.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (7)