Ответы пользователя по тегу HTML
  • Подключение 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 в первом конфиге для отключения кеширования на время разработки.
    Ответ написан
    Комментировать
  • Куда сохроняется база данных indexedDB?

    NaN
    @NaN
    На диск.
    На скорость влияет так же, как и остальные локальные данные браузера: настройки, куки, tmp...
    Я думаю, на современных ПК сама по себе большая база - не проблема. Проблема правильно с ней обращаться и посматривать в профилировщик изредка.
    Ответ написан
  • Как формировать заголовки на веб-странице?

    NaN
    @NaN
    Ребята, вы сами понимаете, что советуете человеку?
    Человек не понимает базовых "принципов", не понимает принцип работы "клиент - сервер", а вы советуете ему сразу изучать фреймворки, mvc, ssi, шаблонизаторы!
    Шаблонизаторы, Карл!
    подключать скрипт выше начала html

    Совсем не обязательно. Достаточно, чтобы перед выводом title нужный заголовок из подключаемого файлы уже был в области видимости текущего файла.

    Однако подход изначально провальный и неверный. А к необходимости использования фреймворков нужно приходить с пониманием, зачем они сделаны и какие задачи покрывают, а не считать их панацеей.
    Ответ написан
    Комментировать
  • Как сделать что бы при выборе select`a он пропадал из списка?

    NaN
    @NaN
    $('#select').on('change', function(e){
        var inst = $(this).val();      
        $('div').append('<p class="active">' + inst +'</p>');
       /* + */ $(this).find(':selected').remove(); 
        $('.active').on('click', function(e){
           $(this).remove(); 
        });
    });
    Ответ написан
    2 комментария