Содержание vBulletin не обновляется - mod_expires/Apache?

Извините за действительно длинный вопрос. Я некоторое время устранял это и решил поделиться всем.

Я использую vBulletin 5.1.5 (не беспокойтесь об этом), и я пытаюсь выяснить, связана ли проблема с программным обеспечением vBulletin или с проблемой Apache.

Система: vBulletin 5.1.5, Apache 2.4.7, mod_expires, memcached

Эта проблема возникает независимо от локального браузера (Chrome и Firefox оба делают это).

Я только что сделал обновление с vBulletin 5.1.4 до 5.1.5, и эта проблема стала возникать сразу после. vBulletin говорит, что это проблема сервера Apache и что они будут только устанавливать содержимое / заголовки как no-cache или оставят это в покое.

Если кто-то публикует ответ в теме, а затем возвращается на главную страницу форума, новый ответ не отображается как последний (в теме по-прежнему отображается 0 ответов). Если они затем вернутся в ветку, ответ не появится, пока они не обновят страницу.

Мы очистили системный кеш vBulletin, удалили все куки для домена и очистили локальный кеш.

Через инструменты разработчика Chrome (вкладка "Сеть") я вижу следующее:

Когда страница была обновлена, не должен ли vBulletin сбрасывать дату: в заголовке HTTP?

Я делаю оригинальный пост в 15:12:05 UTC. Я делаю ответ сразу после в 15:12:10 UTC. Заголовок HTTP страницы по-прежнему показывает дату: как 15:12:05 UTC. Я покидаю страницу и захожу на главную страницу форума, затем возвращаюсь к посту. Он все еще показывает дату заголовка HTTP: как 15:12:05 UTC, пока я не обновлю его. Итак... клиенту не сообщают, что на странице есть обновление. Это установлено vBulletin, не так ли? Так как страницы создаются динамически?

Я включил отладку в конфигурационном файле и посмотрел метки времени ((генерируется BY vbulletin внизу каждой отображаемой страницы):

Начальное сообщение - Текущее время: ср, 04 фев 2015 11:31:39 -0500 После комментария - Текущее время: ср, 04 фев 2015 11:31:39 -0500 Нажмите на ссылку на форуме - Текущее время: ср, 04 фев 2015 11:31:03 -0500 Обновление попаданий - текущее время: ср, 04 фев 2015 11:33:12 -0500 Снова нажмите на тему - текущее время: ср, 04 фев 2015 11:31:39 -0500 Обновление кликов - текущее время: Ср, 04 фев 2015 11:35:15 -0500

Обратите внимание, что когда я нажимаю на ссылку на форуме, я возвращаюсь назад во времени (хотя я сделал новое сообщение). Я освежаюсь, мы возвращаемся в текущее время.

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

Глядя на логи:

  1. Я нажимаю на новую тему GET /forums/new-content/44 HTTP/1.1
  2. Я делаю пост POST /forums/create-content/text/ HTTP/1.1
  3. Страница обновляется GET /forums/forum/general/test-forum/28305-this-is-another-new-topic
  4. Я добавляю ответ POST /forums/create-content/text/ HTTP/1.1
  5. Ответ показывает POST /forums/create-content/loadnode HTTP/1.1
  6. Я захожу на родительский форум с постом GET /forums/forum/general/test-forum HTTP/1.1
  7. Я нажимаю на сообщение, отображение страницы и HTTP / 1.1 POST /forums/ajax/api/node/incrementNodeview, а затем GET /forums/foru...-another-testt HTTP/1.1

Все имеет код состояния 200. Пункты 6 и 7 имеют Cache-Control: max-age=3600 и дату и время исходного сообщения.

Возможно я не уверен относительно того, как истечение работает между сервером и клиентом? Разве процесс от клиента к серверу не должен быть чем-то вроде... свернуть оригинальную страницу и кэшировать ее локально. Запросите ту же страницу позже, отправьте запрос на сервер для заголовка, чтобы увидеть, есть ли у страницы новое время, если они совпадают, затем потяните локальную копию, если они не совпадают, отправьте новую копию. Apache не знает, была ли страница обновлена ​​или нет - это сгенерировано vBulletin, верно?

Какие-нибудь мысли?

1 ответ

Оказывается, это проблема с каталогом /forums (в корневом каталоге), унаследовавшим директивы.htaccess из родительского каталога (/). Есть ряд директив expires, которые там слушали. Теперь... чтобы выяснить, как игнорировать файл.htaccess из родительского каталога...

Другие вопросы по тегам