Срок действия страницы - PHP / CakePHP и Internet Explorer - PullRequest
3 голосов
/ 26 мая 2010

На моем сайте есть окно поиска, в котором пользователь вводит термин и результаты отображаются. Когда они нажимают на один из результатов (продукт), они попадают на страницу продукта. Когда они нажимают кнопку «Назад», они получают сообщение «Предупреждение: срок действия этой страницы истек».

Я использую CakePHP на Apache, и мне сообщили, что мне нужно изменить session.cache_control? Я попытался изменить его в private в htaccess, но, похоже, это не помогло.

Любая помощь высоко ценится.

Ура, D

Ответы [ 2 ]

2 голосов
/ 26 мая 2010

Это не имеет ничего общего ни с CakePHP, ни сессиями. Действительно, проблема возникает на всех языках веб-программирования.

Решение состоит в том, чтобы сделать страницу результатов поиска кэшируемой - я полагаю, что вы не обновляете свой каталог каждые 5 минут?

Чтобы сделать его кэшируемым, необходимо убедиться, что поисковые термины отправляются с использованием GET, а не POST, а затем установить правильные заголовки, чтобы браузер мог кэшировать страницу, например,

 header('Cache-Control: max-age=360'); // allows browser to keep for 1 hour

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

 header('Varies: Cookie');

С

0 голосов
/ 27 мая 2010

Вы также можете использовать шаблон Post / Redirect / Get design pattern , чтобы избежать этого. Например:

function index($searchTerms = null) {
    if (isset($this->data['Model']['search_terms'])) {
        $this->redirect(array($this->data['Model']['search_terms']));
    }
    // your normal code here.
}

Это приведет к URL-адресам, таким как /controller/action/search+terms вместо /controller/action?search_terms=search+terms, и условия поиска будут переданы действию в качестве параметра (т. Е. $searchTerms в данном случае).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...