Проблемы с возвратом значений между моим localhost и моим доменом - PullRequest
0 голосов
/ 17 апреля 2009

У меня запутанная разница между моим localhost (xampp windows) и моим доменом (FC7 linux). У меня есть страница с большим количеством списков выбора, управляемых базой данных. При обновлении эти значения передаются на страницу, которая обновляет базы данных и подтверждает это пользователю. (Я наблюдаю за своими БД напрямую, и это происходит правильно)

Есть пункт меню для возврата на страницу ввода. Выбор этого на моем locahost вернет страницу с обновленными значениями. Выбор этого в моем домене вернет страницу с исходными значениями (например, скрипт php не запускается). Я должен обновить (вызывает запрос), а затем перезагрузить (загружает значения в поля), чтобы получить новые значения для отображения.

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

Ответы [ 3 ]

1 голос
/ 17 апреля 2009

Неправильный ответ, который вы получаете, скорее всего, приходит из кеша.

Вы можете использовать средство просмотра заголовков HTTP , чтобы узнать, какие заголовки кэширования отправляет ваш сервер, или вы можете быть уверены, с помощью LiveHTTPHeaders дополнения для Firefox.

Что вы ищете:

  • Заголовок Expires: указывает браузеру повторно использовать эту же страницу для дальнейших запросов до определенной даты, без проверки с сервера. То же самое верно для секции max-age = в заголовке Cache-Control: . То есть, если вы видите заголовок Expires или раздел максимального возраста, браузер может вернуть устаревшую (устаревшую) страницу, не возвращаясь на сервер.

Возможно, что ваш сервер или прокси-сервер между вашим браузером и вашим сервером автоматически добавляет подобные валидаторы кэша на ваши страницы, тогда как ваш сервер на вашем локальном хосте - нет. Если это так, вы можете попытаться удалить их. Возможно, администратор сервера настроил mod_expires (вы можете переопределить это в .htaccess). Если это вызвано прокси-сервером между вашим браузером и вашим сервером, у вас может не быть большого выбора.

Несколько других интересных вещей:

  • Вы должны использовать запрос POST, а не запрос GET, если важно, чтобы определенное действие что-то изменило на сервере. Ответы на POST-запросы никогда не кэшируются (хотя, если вы выполните Post-Redirect-Get , тогда получите get после него, но это уже другая история).
  • Обратите внимание, что кэширование в вашем браузере может вести себя по-разному, когда вы обращаетесь к чему-то на «localhost» по сравнению с доступом к нему в любом другом домене, даже если серверы настроены одинаково и отправляют одинаковые заголовки. По крайней мере, это относится к Firefox (я сам это видел). IE также имеет разные зоны безопасности, которые могут правдоподобно влиять на кеширование, заставляя его вести себя по-разному на localhost.
  • Вы можете заставить свой сервер выводить Cache-Control: заголовок no-cache и заголовок Pragma: no-cache . Это можно сделать в PHP, используя два вызова функции header (). Хотя браузеры и прокси-серверы не должны использовать поведение по умолчанию, которое может вернуть устаревший результат, если не указан валидатор, это по крайней мере делает явным то, что вы абсолютно не хотите, чтобы что-то кэшировалось.

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

0 голосов
/ 21 апреля 2009

Я исследовал это дальше. Оказывается, эта проблема кеширования возникает только тогда, когда сайт доступен через моего интернет-провайдера работ! (Хорошо, если я получу доступ из дома или через другого провайдера).

** Небольшое исправление моего исходного сообщения ** Мне нужно (1) перезагрузить страницу (2) зарезервировать URL

0 голосов
/ 17 апреля 2009

Обновить, а затем перезагрузить? Есть ли взаимодействие страницы, которое загружает данные в поля выбора?

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

...