Урегулирование заголовка ответа в случае публикации CQ5

Я хочу отключить кэширование в компоненте CQ, и у меня есть следующая линия в моем jsp (документация):

response.setHeader("Dispatcher", "no-cache");

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

Теперь, если я делаю то же самое на случае публикации (та же самая конфигурация с CQ_RUNMODE ='publish' и то же самое содержание) составляющие работы, но для урегулирования заголовка HTTP.

Какая-либо идея о том, почему эти два случая могли вести себя по-другому?

Обновление

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

Обновление 2

Я пытался уменьшить свой пример, удаляя все, что является ненужным со страницы (расположение, код для заголовков, нижней сноски...), и я заметил, что после порога определенного размера мой заголовок правильно произведен.

Другими словами, удаляя материал из страницы (даже простой HTML) я достигаю определенного момента, где заголовок появляется (если страница достаточно маленькая).

Какая-либо идея о том, почему CQ только производит заголовок для очень маленьких страниц?

2
nl ja de
@DavidGorsline спасибо за предложение. Я проверил код и нет никакого условия. Заявления прямо перед setHeader и после setHeader выполняются правильно.
добавлено автор Matteo, источник
@BertrandDelacretaz нет, я просто удаляю простую линию HTML (даже параграф) и заголовок, вновь появляется. Я также вижу ошибки о потерянных кусках. Как только страница меньше, что кусок HTTP она работает.
добавлено автор Matteo, источник
О вашем обновлении 2, я сомневаюсь относительно it' s размер страницы, который имеет значение - it' s более вероятно, когда вы удаляете определенный компонент (включенный сценарий, и т.д.), что заголовки работают снова.
добавлено автор Bertrand Delacretaz, источник
Возможно, это - слишком очевидное предложение - но является там шансом, что ваш код, чтобы ввести заголовок обернут в некотором тест?
добавлено автор David Gorsline, источник

2 ответы

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

If you need to flag the page as not cached & you cannot avoid placing the code higher in the buffer, you could instead write in a check for this node type at the start of the JSP (using node.listChildren() for example), or provide a page property that let's the editor control if the page is cached or not.

4
добавлено
Спасибо, это была действительно проблема. Я иногда смог получить заголовок, поскольку страница была достаточно маленькой, что ответ еще не был передан, добавляя заголовок. Большая проблема все еще там but' s не связан.
добавлено автор Matteo, источник
Можно управлять размером буфера, добавляя буфер = "x" к jsp директиве страницы если it' s смывание буфера слишком скоро. Создание его слишком большой потенциально вызовет проблемы масштабируемости. You' ll должен сделать это на первом JSP, названном, т.е. самый верхний компонент.
добавлено автор antonyh, источник

Вы не указали, какую версию CQ5 вы используете - я просто проверил с минимальным сценарием JSP на CQ 5.5 GA, издают случай, и заголовок правильно установлен:

$ curl -u admin:admin http://localhost:4503/tmp/x.tidy.json
{
  "sling:resourceType": "x",
  ...
}

$ curl -u admin:admin http://localhost:4503/apps/x/x.jsp
<%
response.setHeader("Dispatcher","no-cache");
%>
Here's the content.

$ curl -D - -u admin:admin http://localhost:4503/tmp/x.html
HTTP/1.1 200 OK
Connection: Keep-Alive
...
Dispatcher: no-cache

Here's the content.

Вы могли бы хотеть начать с этого минимального теста и соответствовать тому, что вы делаете.

2
добавлено