У нашего веб-приложения есть номера версий, которые передаются клиенту по каждому запросу, поэтому мы можем обнаружить обновление кода (то есть скользящие обновления) и отображать всплывающее окно, информирующее их, чтобы перезагрузить, чтобы воспользоваться последним обновлением.
Но я испытываю какое-то странное поведение после обновления номера версии на сервере, где некоторые запросы возвращают номер новой версии, а некоторые возвращают старый, поэтому всплывающее окно всплывает, пока вы не перезагрузите страницу несколько раз.
Первоначально я подозревал, что apache кэширует файлы, которые он считывает с диска через file_get_contents, поэтому вместо хранения номера версии в текстовом файле я сохраняю его в php-файле, который входит в каждый запрос, но я испытываю то же самое вопрос!
У кого-нибудь есть идеи, из-за чего apache или php он сам будет обслуживать старую информацию после того, как я сделал обновление?
EDIT: Я подтвердил, что это не кеширование браузера, поскольку я могу заставить клиент генерировать уникальные URL-адреса для сервера (с которыми он может справиться через переписывание), и я все еще вижу ту же проблему, когда некоторые запросы возвращают старый номер версии, а некоторые новые, и очистка кеша браузера не помогает
EDIT 2: заголовки ответов в соответствии с запросами
HTTP/1.1 200 OK Date: Mon, 23 Jul 2012 16:50:53 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.7 Cache-Control: no-cache, must-revalidate Pragma: no-cache Expires: Sat, 26 Jul 1997 05:00:00 GMT Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 500 Connection: close Content-Type: text/html
EDIT 3: Поэтому, пытаясь воспроизвести, чтобы получить заголовки ответов, которые я нашел, я мог только сделать это через наш полный процесс развертывания, который включает в себя создание версий папок, хранящих код и символическую ссылку на папку relavant в webroot. Просто изменить номер версии было недостаточно, чтобы это произошло! Кажется, что-то связано с символическими ссылками, которые я создаю!
У меня такая же проблема, когда есть изменение в символической ссылке. Посмотрите на https://bugs.php.net/bug.php?id=36555 , возможно, это то, что вы ищете.
Попробуйте (как сказано в этом отчете об ошибке), значение realpath_cache_size равно 0.