Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: css.php
 
 автор: ladan   (12.08.2012 в 19:28)   письмо автору
 
 

Здравствуйте!

В файле css.php подключается основной файл style.css

И в зависимости от ссылки в браузере могут подлючаться другие файлы .css

Вопрос такой.

При первом открытии сайта браузер закачивает css.php к себе в кеш и больше по идеи его не дергает (это если в нем содержимое не изменилось, наверно).

Но что будет, когда в файле css.php подгрузился маленький файл? Получается браузер по новой будет закачивать к себе в кеш css.php или докачивать к уже закаченному ранее?

  Ответить  
 
 автор: confirm   (12.08.2012 в 19:50)   письмо автору
 
   для: ladan   (12.08.2012 в 19:28)
 

Браузер не отслеживает изменения файла, об этом должны сообщать ему вы.

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:11)   письмо автору
 
   для: confirm   (12.08.2012 в 19:50)
 

если получится, что файл css.php будет по новой в кеш браузера каждый раз закачиваться при его изменении, то не буду такое на сайте использовать...

  Ответить  
 
 автор: confirm   (12.08.2012 в 20:16)   письмо автору
 
   для: ladan   (12.08.2012 в 20:11)
 

Если постоянно закачивать в кеш, не взирая на то, что были изменения или нет, то смысл в кеше?

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:18)   письмо автору
 
   для: confirm   (12.08.2012 в 20:16)
 

по этому я и создал тему :) Если каждый раз по новой будет закачиваться, то такой подход неудачный будет... тем более для людей с медленным инетом :)

  Ответить  
 
 автор: confirm   (12.08.2012 в 20:20)   письмо автору
 
   для: ladan   (12.08.2012 в 20:18)
 

Если каждый раз по новой, то это наоборот надо запрещать кеширование.
<link rel="stylesheet" href="css/style.css?дата_последнего_изменения_файла" />

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:26)   письмо автору
 
   для: confirm   (12.08.2012 в 20:20)
 

То есть если запретить браузеру кешировать style.php, то куда он будет грузиться? На сколько я знаю, браузеры игнорируют запреты на кеширование (может ошибаюсь), если только в настройках самого браузера не поставить как надо

  Ответить  
 
 автор: confirm   (12.08.2012 в 20:30)   письмо автору
 
   для: ladan   (12.08.2012 в 20:26)
 

Вам чего надо?
Если запретить кеширование, то бразуер будет постоянно грузить, но вопрос у вас разве в этом?
Я вам что по вашему показал? Вроде бы как ответ на ваш вопрос - как грузить тогда, когда есит изменения. Или нет?

Я вижу, по вашему коду ниже, что вы продолжаете болеть регулярными болезнями. Пора бы вылечиться ) Заходите в описание правил CSS, и прочтите как делаются включения в CSS-файлы, а pregИ в помойку.

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:53)   письмо автору
 
   для: confirm   (12.08.2012 в 20:30)
 

Нет, мне не нужно, чтоб браузер постоянно грузил файл. Нужно чтоб он один раз его закачал и потом просто докачивал

  Ответить  
 
 автор: confirm   (12.08.2012 в 20:54)   письмо автору
 
   для: ladan   (12.08.2012 в 20:53)
 

Этого браузер не делает - докачивает кеш.

  Ответить  
 
 автор: ladan   (12.08.2012 в 21:39)   письмо автору
 
   для: confirm   (12.08.2012 в 20:54)
 

Я понимаю так:

Браузер закачал к себе в кеш один раз css.php и стили теперь будет брать "у себя".

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

  Ответить  
 
 автор: confirm   (12.08.2012 в 21:59)   письмо автору
 
   для: ladan   (12.08.2012 в 21:39)
 

Ей богу трудно говорить с вами, вроде бы вам нужно обновление, если были изменения (что и по этому посту видно), в тоже время вы это отрицаете. Так что вам надо то?

>При первом открытии сайта браузер закачивает css.php к себе в кеш и больше по идеи его не дергает (это если в нем содержимое не изменилось, наверно).

1. Браузер чисто по физическим причинам не может знать, что у вас там чего-то изменилось.

>Но если вдруг css.php изменится, на пример, добавятся новые стили для корректного отображения отдельной страницы, то такая страница будет криво выглядеть?

2. Да, пока кеш не будет обновлен.

>это исходя из того, что браузер ранее скешировал css.php (а до этого в нем не было дополнительных стилей)

3. Да, так как это следствие 1.

И так, чего вам в конце концов надо в итоге?

  Ответить  
 
 автор: ladan   (12.08.2012 в 22:45)   письмо автору
 
   для: confirm   (12.08.2012 в 21:59)
 

Все, теперь понятно!


Это сейчас проверю :)

>Но если вдруг css.php изменится, на пример, добавятся новые стили для корректного отображения отдельной страницы, то такая страница будет криво выглядеть?

2. Да, пока кеш не будет обновлен.


Или тогда придется обычные style.css подлючать как по старинке...

  Ответить  
 
 автор: confirm   (12.08.2012 в 22:54)   письмо автору
 
   для: ladan   (12.08.2012 в 22:45)
 

А обращение к файлу .php, который отдает также CSS файл, это значит по-новинке?
Я вот уверен, что вы занимаетесь совсем не тем, чем следовало бы - не о кеш как таковом думать надо, а о том, как организовать CSS файлы для страниц.

  Ответить  
 
 автор: ladan   (12.08.2012 в 23:44)   письмо автору
 
   для: confirm   (12.08.2012 в 22:54)
 

Да я понимаю, не хочу загромождать подключениями страницы.. плюс еще сжать можно моими любимыми preg :)



Удалил кеш в хроме. Зашел на главную страницу своего сайта, чтоб браузер получил свежий кеш.

Браузер получил кеш, где не хватает одного стиля для второй проверочной страницы сайта (этот стиль придает красный цвет тестку).

Надо как-то в style.php "загнать" этот стиль.

Отслеживаю страницы
setcookie("URI",$_SERVER['REQUEST_URI'],0,"/");


При обращении к http://sait.ru/css/style.php идет проверка
if(preg_match("#ссылка на проверяемую страницу#",$_COOKIE['URI'])) {echo "

#proverka {color:red;}

";}



Перейдя на проверочную страницу, в файле style.php автоматом добавился стиль, но так как в кеше браузера старый "образ" style.php, то этот новый стиль никак не должен повлиять на цвет текста... ведь браузер считавает только ранее получению версию style.php (до принудительного обновления кеша)

Однако текст покрасился!!


Если проверять с телефона (nokia 5800), то будет как раз то, что вы сказали... только обновление в кеше помогает

  Ответить  
 
 автор: confirm   (13.08.2012 в 08:47)   письмо автору
 
   для: ladan   (12.08.2012 в 23:44)
 

Preg... уже и сжимает?! Что вы говорите, это когда он такое научился делать?

Если отличие стилей неких страниц отличается от основного стиля несколькими правилами, да еще типа {color:red;}, то все ваш аргумент "не хочется перегружать файлами..." несостоятелен, так как такие отличия, это мелочь, которая "намертво" может быть прописана в основных стилях. Вы проигрываете гораздо больше на лишних запросах, чем экономите в строках.

  Ответить  
 
 автор: ladan   (13.08.2012 в 09:27)   письмо автору
 
   для: confirm   (13.08.2012 в 08:47)
 

я просто проверил как браузеры себя ведут, когда в style.php добавился стиль. С одной стороны удобно все стили подлючать в одном файле в зависимости от ссылки, но что-то подсказывает, что не нужно этого делать. Спасибо вам за ответы :)

  Ответить  
 
 автор: confirm   (13.08.2012 в 10:15)   письмо автору
 
   для: ladan   (13.08.2012 в 09:27)
 

А кто вам мешает подключать еще один файл, который бы описывал стили только для неких страниц?
Не знаю кто и что вам подсказывает (хотя вы и помещаете в один файл, только методом драконовским), но то, что вы привели, это жалкие крохи из-за которых потерять можно больше. Сначала бы проверили выгодно ли, а уж потом...

  Ответить  
 
 автор: ladan   (13.08.2012 в 11:53)   письмо автору
 
   для: confirm   (13.08.2012 в 10:15)
 

А кто вам мешает подключать еще один файл, который бы описывал стили только для неких страниц?


Сейчас так и есть! Хорошо, не буду заниматься ерундой :)

  Ответить  
 
 автор: cheops   (12.08.2012 в 19:53)   письмо автору
 
   для: ladan   (12.08.2012 в 19:28)
 

Вы css.php как используете? Прямо указываете путь к нему в тэге <link>? Или подключаете при помощи директив include/require?

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:09)   письмо автору
 
   для: cheops   (12.08.2012 в 19:53)
 

вот в head

<link href="http://sait.ru/css/style.php" type="text/css" rel="stylesheet">

а вот содержимое файла php


<?
header
("Content-type: text/css");
ob_start("compress_css");
function 
compress_css($buffer

{
    
$arr1 = array("#\t#","#\r\n#","#}\s*{#","#;\s*#","#\s*{#","#\s{2,}#","#/\*.*?\*/#");
$arr2 = array("","","}{",";","{"," ","",""); 

    return  
preg_replace($arr1,$arr2,$buffer);
        
}

//эти файлы подлючаются один раз и не изменяются
if($_COOKIE['design']=="1000px") {include("style1000(tzxSECyQdp).css");} //основной файл

 
else {include("style1300(6UTcgnHFEy).css");} //основной файл


//сюда будут подлючать другие css файлы в зависимости от ссылки. Вот не знаю как браузер будет на это смотреть, то ли по новой каждый раз 
style.php закачивать при его изменении или докачивать(хзвозможно ли вообще такое)

ob_end_flush();
?>

,

  Ответить  
 
 автор: ladan   (12.08.2012 в 20:17)   письмо автору
 
   для: cheops   (12.08.2012 в 19:53)
 

ниже показал как :)

  Ответить  
 
 автор: ols   (13.08.2012 в 09:21)   письмо автору
 
   для: ladan   (12.08.2012 в 19:28)
 

Неоправданный подход. Было бы разумно, если бы css хранился в БД

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования