|
|
|
| Здравствуйте!
В файле css.php подключается основной файл style.css
И в зависимости от ссылки в браузере могут подлючаться другие файлы .css
Вопрос такой.
При первом открытии сайта браузер закачивает css.php к себе в кеш и больше по идеи его не дергает (это если в нем содержимое не изменилось, наверно).
Но что будет, когда в файле css.php подгрузился маленький файл? Получается браузер по новой будет закачивать к себе в кеш css.php или докачивать к уже закаченному ранее? | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 19:28)
| | Браузер не отслеживает изменения файла, об этом должны сообщать ему вы. | |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 19:50)
| | если получится, что файл css.php будет по новой в кеш браузера каждый раз закачиваться при его изменении, то не буду такое на сайте использовать... | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 20:11)
| | Если постоянно закачивать в кеш, не взирая на то, что были изменения или нет, то смысл в кеше? | |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 20:16)
| | по этому я и создал тему :) Если каждый раз по новой будет закачиваться, то такой подход неудачный будет... тем более для людей с медленным инетом :) | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 20:18)
| | Если каждый раз по новой, то это наоборот надо запрещать кеширование.
<link rel="stylesheet" href="css/style.css?дата_последнего_изменения_файла" />
|
| |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 20:20)
| | То есть если запретить браузеру кешировать style.php, то куда он будет грузиться? На сколько я знаю, браузеры игнорируют запреты на кеширование (может ошибаюсь), если только в настройках самого браузера не поставить как надо | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 20:26)
| | Вам чего надо?
Если запретить кеширование, то бразуер будет постоянно грузить, но вопрос у вас разве в этом?
Я вам что по вашему показал? Вроде бы как ответ на ваш вопрос - как грузить тогда, когда есит изменения. Или нет?
Я вижу, по вашему коду ниже, что вы продолжаете болеть регулярными болезнями. Пора бы вылечиться ) Заходите в описание правил CSS, и прочтите как делаются включения в CSS-файлы, а pregИ в помойку. | |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 20:30)
| | Нет, мне не нужно, чтоб браузер постоянно грузил файл. Нужно чтоб он один раз его закачал и потом просто докачивал | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 20:53)
| | Этого браузер не делает - докачивает кеш. | |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 20:54)
| | Я понимаю так:
Браузер закачал к себе в кеш один раз css.php и стили теперь будет брать "у себя".
Но если вдруг css.php изменится, на пример, добавятся новые стили для корректного отображения отдельной страницы, то такая страница будет криво выглядеть? это исходя из того, что браузер ранее скешировал css.php (а до этого в нем не было дополнительных стилей) | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 21:39)
| | Ей богу трудно говорить с вами, вроде бы вам нужно обновление, если были изменения (что и по этому посту видно), в тоже время вы это отрицаете. Так что вам надо то?
>При первом открытии сайта браузер закачивает css.php к себе в кеш и больше по идеи его не дергает (это если в нем содержимое не изменилось, наверно).
1. Браузер чисто по физическим причинам не может знать, что у вас там чего-то изменилось.
>Но если вдруг css.php изменится, на пример, добавятся новые стили для корректного отображения отдельной страницы, то такая страница будет криво выглядеть?
2. Да, пока кеш не будет обновлен.
>это исходя из того, что браузер ранее скешировал css.php (а до этого в нем не было дополнительных стилей)
3. Да, так как это следствие 1.
И так, чего вам в конце концов надо в итоге? | |
|
|
|
|
|
|
|
для: confirm
(12.08.2012 в 21:59)
| | Все, теперь понятно!
Это сейчас проверю :)
>Но если вдруг css.php изменится, на пример, добавятся новые стили для корректного отображения отдельной страницы, то такая страница будет криво выглядеть?
2. Да, пока кеш не будет обновлен.
|
Или тогда придется обычные style.css подлючать как по старинке... | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 22:45)
| | А обращение к файлу .php, который отдает также CSS файл, это значит по-новинке?
Я вот уверен, что вы занимаетесь совсем не тем, чем следовало бы - не о кеш как таковом думать надо, а о том, как организовать CSS файлы для страниц. | |
|
|
|
|
|
|
|
для: 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), то будет как раз то, что вы сказали... только обновление в кеше помогает | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 23:44)
| | Preg... уже и сжимает?! Что вы говорите, это когда он такое научился делать?
Если отличие стилей неких страниц отличается от основного стиля несколькими правилами, да еще типа {color:red;}, то все ваш аргумент "не хочется перегружать файлами..." несостоятелен, так как такие отличия, это мелочь, которая "намертво" может быть прописана в основных стилях. Вы проигрываете гораздо больше на лишних запросах, чем экономите в строках. | |
|
|
|
|
|
|
|
для: confirm
(13.08.2012 в 08:47)
| | я просто проверил как браузеры себя ведут, когда в style.php добавился стиль. С одной стороны удобно все стили подлючать в одном файле в зависимости от ссылки, но что-то подсказывает, что не нужно этого делать. Спасибо вам за ответы :) | |
|
|
|
|
|
|
|
для: ladan
(13.08.2012 в 09:27)
| | А кто вам мешает подключать еще один файл, который бы описывал стили только для неких страниц?
Не знаю кто и что вам подсказывает (хотя вы и помещаете в один файл, только методом драконовским), но то, что вы привели, это жалкие крохи из-за которых потерять можно больше. Сначала бы проверили выгодно ли, а уж потом... | |
|
|
|
|
|
|
|
для: confirm
(13.08.2012 в 10:15)
| | А кто вам мешает подключать еще один файл, который бы описывал стили только для неких страниц?
Сейчас так и есть! Хорошо, не буду заниматься ерундой :) | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 19:28)
| | Вы css.php как используете? Прямо указываете путь к нему в тэге <link>? Или подключаете при помощи директив include/require? | |
|
|
|
|
|
|
|
для: 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();
?>
| , | |
|
|
|
|
|
|
|
для: cheops
(12.08.2012 в 19:53)
| | ниже показал как :) | |
|
|
|
|
|
|
|
для: ladan
(12.08.2012 в 19:28)
| | Неоправданный подход. Было бы разумно, если бы css хранился в БД | |
|
|
|