PHP5.3 с проблемой кэширования FastCGI Accross разные запросы

StackOverflow https://stackoverflow.com/questions/3146397

  •  01-10-2019
  •  | 
  •  

Вопрос

Я разработал файлы stylesheet / JavaScript Bundler и Minifier, который использует простой механизм кэша. Он просто записывает в файл Timestamp от каждого подключенного файлов и сравнивает эти временные метки для предотвращения перезаписи «Master File» снова. Таким образом, после обновления приложений (здесь мой сайт), где были изменены файлы CSS или JS, один запрос снова проверит кеширование только один раз. Это, и все остальные запросы увидели бы скомпилированный файл, такой как Master.css? V = 1234567.

Дело в том, что в рамках моей среды развития каждый пропуск тестов, интеграция работает отлично, и все работает, как ожидалось. Однако в моем промежуточной среде на сервере с PHP5.3 скомпилирован с FastCGI, мои кэшированные файлы, похоже, получаются переписаны с недействительными данными, но только при отсутствии одного браузера.

Используйте корпус:

  • Я делаю первый запрос на Firefox под Linux. Все работает, как и ожидалось за все остальные запросы на этот браузер.
  • Как только я сделаю запрос на Windows / Linux (IE7, IE8, Chrome и т. Д.) Мой файл кэша получает неверные данные, но только на промежуточном сервере, работающем под FastCGI, а не в разработке!
  • Запуск Еще один запрос на Firefox подтверждает файл правильно.

Я тогда удивлялся, у FastCGI есть что угодно с этим? Я думал, что клиенты браузера или даже операционные системы не имеют ничего общего с сервером бокового кода.

Я знаю, что эта проблема абстрактно описана, но вставка какого-либо конкретного кода будет слишком тяжелым ИМО, но я сделаю это, если это может прояснить мой вопрос.

Я пробовал удаленный отладки моего кода и обнаружил, что все все еще работало, как и ожидалось, даже кэшированный файл написан правильно. Я видел, что когда произойдет ошибка, файл написан с ожидаемыми данными, но затем возвращается с помощью недопустимых данных после двух секунд --after PHP закончил свое выполнение! -

Есть ли способ отключить, что CastCGI кэширование для конкретных запросов через функцию PHP может быть?

Это было полезно?

Решение

В зависимости от вашей среды вы можете посмотреть на работу с использованием .htaccess в Apache, чтобы обслуживать эти запросы в регулярном режиме CGI. Это, вероятно, может быть сделано только с простым дополнением и действием, которое указывает на CGI напрямую. Этот вид предполагает, что вы развертываете какую-то общую среду хостинга, где у вас нет прямого доступа к конфигурации Apache.

Поскольку FastCGI сохраняет процесс в течение определенного периода времени, имеет смысл, что он может быть сложенным файлом в более позднем точке после первоначального выполнения, хотя, что может быть за пределами меня.

Не много помощи, я знаю, но может дать вам несколько идей ...

Редактировать: вот код .htaccess из моего комментария ниже

Options -Indexes +FollowSymLinks +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5.cgi
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top