Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Оптимизация загрузки CSS и JavaScript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь, есть скрипт который собирает css воедино и переедает браузеру (так же можно сделать и с js) но вот незадача он у меня что-то не работает. Собственно сейчас ниже будут представлены мои действия которые я проделывал (для вашего полного понимания)
 
1.Сначала добавил на страницу html

Код:
<link href="css/.allcss.php" rel="stylesheet" type="text/css" />

 
2.Создал файл .allcss.php в котором разместил вот этот код

Код:
<?php
// посылаем заголовок браузеру, сообщая что это text/css
header("Content-type: text/css; charset: UTF-8");
 
$url='css';
$crc=md5($url); //название файла кеша
$modif=time()-@filemtime("cache/$crc"); //узнаем время кеша
 
  if($modif<60000) { //ести кеш не устарел
include ("cache/$crc"); //подгружаемся из кеша
  } else {
ob_start ();  //иначе, собираем новый файл стилей из кучи отдельных файлов лежащих в папке со скриптом
                $files1 = scandir('./'); //содержимое папки
foreach($files1 as $file) { //перебор всех файлов стилей
  if($file=='.'||$file=='..'||strpos($file, '.php')||!strpos($file, '.css')) continue;
  echo file_get_contents($file); //вывод в буфер
                }
$cache = ob_get_contents();
ob_end_clean (); //очистка буфера
echo $cache; // вывод в файл(браузер)
 
$fp = @fopen ("cache/$crc", "w"); //сохраняем кеш
@fwrite ($fp, $cache);
@fclose ($fp);
   }
?>

 

Код:
<?php и ?>

я добавил сам, так как автор (где я нашёл этот скрипт) в представленном им коде не указал этот тег.
 
3.Закинул .allcss.php в папку с css (где лежат все стили, папка лежит сразу в корне сайта).
 
Народ помогите, что я сделал не так? я просто не особо разбираюсь в php.  
P.S сайт у меня на html.
 
Собственно вот сайт на котором я это все брал http://rche.ru/1197_optimizaciya-zagruzki-css-i-javascript-na-stranice.html#comment-464477

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 18:33 11-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
Народ помогите, что я сделал не так

в чем выражается это "не так"? Какие ошибки или что выдается, если в браузере пытаетесь открыть css/.allcss.php ?


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:20 11-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
собственно когда запускаю css/.allcss.php выедает такую ошибку Warning: Cannot modify header information - headers already sent by (output started at I:\home\test.local\www\css\.allcss.php:1) in I:\home\test.local\www\css\.allcss.php on line 3
 
Добавлено:
я так понял что ошибка где то в 3 строке, но третья строка это header("Content-type: text/css; charset: UTF-8"); что тут может быть.

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 03:16 12-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx
ошибка в том, что у вас есть пустое место или BOM запись перед <?php
и она выдается первой браузеру, ДО выдачи заголовков
почитайте  
http://www.phpfaq.ru/headers

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:53 12-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Cheery помог)))
 
Добавлено:
Cheery а как сделать что бы и js таким же способом передавался? думал что так можно сделать, но ничего не работает, сделал вот так

Код:
<script src="js/.alljs.php" type="text/javascript"></script>
<?php
header("Content-type: text/javascript; charset: UTF-8");
$url='js';  
$crc=md5($url); //название файла кеша
$modif=time()-@filemtime("cache/$crc"); //узнаем время кеша
  if($modif<60000) { //ести кеш не устарел
    include ("cache/$crc"); //подгружаемся из кеша
  } else {
    ob_start ();  //иначе, собираем новый файл стилей из кучи отдельных файлов лежащих в папке со скриптом
        $files1 = scandir('./'); //содержимое папки
    foreach($files1 as $file) { //перебор всех файлов стилей
        if($file=='.'||$file=='..'||strpos($file, '.php')||!strpos($file, '.js')) continue;
        echo file_get_contents($file); //вывод в буфер
           }
    $cache = ob_get_contents();
    ob_end_clean (); //очистка буфера
    echo $cache; // вывод в файл(браузер)
    $fp = @fopen ("cache/$crc", "w"); //сохраняем кеш
    @fwrite ($fp, $cache);
    @fclose ($fp);  
   }
?>

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

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 16:54 12-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
В чем проблема?  

в том, что и выше вы делаете неправильно.
а то, что оно работает - вам просто повезло.
 
собирать в "кучу" надо в том порядке, в каком скрипты и стили подключаются на странице, а не в том, в каком они расположены в папке с точки зрения файловой системы.
 
каждый последующий скрипт/стиль может дополнять/переписывать/использовать предыдущий и часто важен порядок загрузки, который необязательно будет выполняться, если брать все файлы подряд из папки.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:39 12-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery все понял, а можно создать один js файл и в него поместить весь скрипт который находится в других js файла[? но с поправкой на то что скрипты будут располагаться в том порядке в котором они подключены на странице, а потом уже пусть php скрипт берет из этого единого js файла и переедает браузеру? или ничего с этого не получится...

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 01:04 13-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
а можно создать один js файл и в него поместить весь скрипт который находится в других js файла[? но с поправкой на то что скрипты будут располагаться в том порядке в котором они подключены на странице, а потом уже пусть php скрипт берет из этого единого js файла и переедает браузеру?

можно, но зачем тогда нужен php скрипт?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:06 13-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В принципе никакой разницы, хоть-так хоть-сяк скорость загрузки не меняется но с помощью php как бы js не заметный, то есть если я не ошибаюсь скачать его затруднительно чем обычным способом...

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 01:16 13-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
хоть-так хоть-сяк скорость загрузки не меняется но с помощью php как бы js не заметный

незаметный чем? вы, для выдачи js, заставляете сервер использовать интерпретатор php, что заведомо медленнее (пусть и не так заметно), чем выдача js файла напрямую

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:45 13-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В каком смысле медленнее, насколько я понял с помощью этого скрипта мы снижаем кол-во запросов браузера к серверу, увеличиваем скорость загрузки, снижаем нагрузку на сервер. То есть когда обычным способом браузер пытается получить файлы стилей и JS скриптов, если их много на странице, то и запросов много.
Насчёт незаметный, это я не так выразился, я имел введу что при желании пользователя выкачать какой то скрипт с сайта будет не так просто, чем скажем обычным способом

Код:
<script src="js/zis.js" type="text/javascript"></script>

 при открытии в браузере (исходный код), да да это ещё одна причина по которой я использую этот скрипт.

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 16:51 13-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
В каком смысле медленнее

разница между  
<script src="js/zis.js" type="text/javascript"></script>
и
<script src="js/zis.php" type="text/javascript"></script>
 
в случае подключения единственного файла со всем кодом, в том, что во втором вы запускаете php скрипт, который ничего нового не сделает.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:44 13-11-2013
xxxZISxxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хмм, это и так понятно, я вам говорил за вообще роботу скрипта (когда он подключает несколько js файлов) а с одним, понятно что разницы нету.

Всего записей: 50 | Зарегистр. 14-06-2013 | Отправлено: 02:18 14-11-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxxZISxxx

Цитата:
а с одним, понятно что разницы нету.

так я вам на
Цитата:
а можно создать один js файл и в него поместить весь скрипт который находится в других js файла[? но с поправкой на то что скрипты будут располагаться в том порядке в котором они подключены на странице, а потом уже пусть php скрипт берет из этого единого js файла и переедает браузеру

и отвечал.. создали вы вручную (или как то еще) один файл в нужном порядке, зачем тогда нужен php скрипт?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:04 14-11-2013 | Исправлено: Cheery, 04:04 14-11-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Оптимизация загрузки CSS и JavaScript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru