Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с кэшем скрипта (php+apache) / 8 сообщений из 8, страница 1 из 1
10.10.2015, 16:43
    #39073563
DeviLooper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
Суть такая: написал скриптик lib.php, который по параметру ?lib=name читает для заданной библиотеки файлы и отдает их как один.
Ну, например, lib.php?lib=java собирает все заданные .js скрипты (jquery.js, и т.п.) и выдает клиенту как один файл.
Так же отдаются стили lib.php?lib=css.

Соответственно, на странице клиента они подключаются как:

Код: html
1.
<script type="text/javascript" src="/lib.php?lib=java"></script>



Хочу чтобы эти библиотеки кэшировались браузером клиента.
В php кэширование отключено.

В lib.php кэширование включаю:

Код: php
1.
2.
3.
header_remove("Expires");
header_remove("Pragma");
header("Cache-Control: private, max-age=3600, must-revalidate");



Также смотрю, если пришел хэдер "If-Modified-Since", то сверяю дату модификации файлов библиотеки и, если они не изменились, отдаю:

Код: php
1.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT', true, 304);


где $time - время изменения библиотеки

Далее, проверяю в firefox + firebug. Гружу страницу первый раз, фаербаг показывает два сетевых запроса - страница, и lib.php.
Все ок, делаю рефреш. Фаербаг опять поаказывает два запроса: страница (перезагружается) и lib.php (пишет 304 Not Modified).

Вроде бы, можно радоваться, да вот хрен. Смотрю логи апача: для lib.php отправляется 2 запроса - первый:
Код: php
1.
2.
"If-Modified-Since" => 'Sat, 10 Oct 2015 09:35:03 GMT', 
"Cache-Control" => 'max-age=0' 



и за ним сразу второй:
Код: php
1.
2.
"Pragma" => 'no-cache', 
"Cache-Control" => 'no-cache' 



Что за хрень? Зачем он запрашивает файл, если он не изменился? Спасите-помогите
...
Рейтинг: 0 / 0
10.10.2015, 16:53
    #39073568
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
Нафига так сложно? Скриптом один раз (при изменении какого-то файла группы) собираете результирующий файл и кладёте его в файловую систему. Клиент пусть его и запрашивает.
...
Рейтинг: 0 / 0
10.10.2015, 17:00
    #39073569
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
DeviLooperЧто за хрень? Зачем он запрашивает файл, если он не изменился? Спасите-помогите
значит насрано где-то

по обрывкам заголовков понять трудно
...
Рейтинг: 0 / 0
10.10.2015, 17:08
    #39073572
DeviLooper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
vkleНафига так сложно?
Ну так универсальнее. У меня несколько разных библиотек, которые подключаются на разных страницах в зависимости от необходимости. И, соответственно, обновляться и проверяться они будут только при запросе.
А если делать фиксированные файлы, то придется проверять все библиотеки все время, а это дольше.
...
Рейтинг: 0 / 0
10.10.2015, 17:34
    #39073580
DeviLooper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
Смешно, но похоже, что виной всему оказался firebug. Отключил его - и вторичные запросы прекратились. Теперь все работает как надо. Можно закрывать :)
...
Рейтинг: 0 / 0
10.10.2015, 17:40
    #39073582
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
DeviLooperНу так универсальнее.В какой-то мере, да. Только у любой универсальности есть обратная сторона то в виде монструозности, то тормозов, то сложностей реализации...


DeviLooperУ меня несколько разных библиотек, которые подключаются на разных страницах в зависимости от необходимости. И, соответственно, обновляться и проверяться они будут только при запросе.
А если делать фиксированные файлы, то придется проверять все библиотеки все время, а это дольше.Не надо ничего проверять. Достаточно при изменении одного файла перегенерировать все результирующие, куда он входит. Другой вопрос, есть ли у Вас карта вхождений изменённого файла в результирующие...

PS: Не уверен, что есть какой-то большой смысл плодить множество наборов файлов с различными сочетаниями компонентов. ИМХО для большинства случаев достаточно одного или двух с относительно неизменными (широко распространённые библиотеки, вроде jquery + плагины) скриптами и одного с основным набором пользовательских скриптов. Остальнвя мелочёвка, которая требуется не часто, нехай дёргается сама по себе, без интеграции.
...
Рейтинг: 0 / 0
10.10.2015, 17:52
    #39073584
DeviLooper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
vkleDeviLooperНу так универсальнее.В какой-то мере, да. Только у любой универсальности есть обратная сторона то в виде монструозности, то тормозов, то сложностей реализации...

Да нет, библиотеки и ривязанные к ни файлы в удобном массивчеке хранятся, сами библиотеки кэшируются на сервере (если файлы не изменялись, будет отдаваться кэш).
Просто сейчас во время отладки/разработки много чего меняется/дополняется, поэтому выбрал такой вариант.
Ну не суть, меня тут другой вопрос мучал )
...
Рейтинг: 0 / 0
10.10.2015, 17:53
    #39073585
DeviLooper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с кэшем скрипта (php+apache)
авторбиблиотеки и привязанные к ним файлы

упс. пальцы уже западают )
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с кэшем скрипта (php+apache) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]