Как избежать кеширования браузера с помощью Codeigniter - PullRequest
4 голосов
/ 24 января 2011

Возникла проблема, связанная с браузером chache.

function doUpload(){

  $data['includeView'] = "profileconfirm";

 $config['upload_path'] = './img/images/uploaded/';
 $config['allowed_types'] = 'gif|jpg|png|jpeg';
 $config['max_size'] = '5000';
 $config['max_width']  = '1024';
 $config['max_height']  = '768';
 $config['file_ext'] =".jpeg";
 $config['file_name'] = $profileId.$config['file_ext'];
 $config['overwrite'] = TRUE;
 $this->load->library('upload', $config);

 $query = null ; 

 if ( ! $this->upload->do_upload()){
  // Error here
 }else{
 // Image uploaded sucess fully
 // $profile - business logic to populate $profile

  $data['PROFILE_DETAILS'] = $profile;

 $this->load->view('index', $data);
}

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

Но на странице profileconfirm новое загруженное изображение не будет отображаться.Иногда это работает нормально, но иногда нет, это происходит в большинстве случаев.

Пожалуйста, помогите

Ответы [ 3 ]

13 голосов
/ 24 января 2011

Вы можете отправить клиенту соответствующие заголовки, чтобы отключить кэш:

....
$this->output->set_header("HTTP/1.0 200 OK");
$this->output->set_header("HTTP/1.1 200 OK");
$this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT');
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->output->set_header("Cache-Control: post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache");
$this->load->view('index', $data);

Примечание. Класс вывода инициализируется автоматически

4 голосов
/ 20 августа 2011

Просто добавьте метку времени к атрибуту src отображаемого изображения.

<img src="filename.jpg?<?php echo time(); ?>">

Чтобы полностью отключить кэш с помощью одной строки кода (после расширения библиотеки вывода), просмотрите http://www.robertmullaney.com/2011/08/13/disable-browser-cache-easily-with-codeigniter/
Отказ от ответственности, мой блог

Редактировать 1: Принятое решение, по моему мнению, излишне, когда все, что вы хотите сделать - принудительно перезагрузить изображение в браузере;)
Редактировать 2: Упрощенное предлагаемое решение.

0 голосов
/ 24 января 2011

Попробуйте следующее:

if (!$this->upload->do_upload())
{
    $error = array('errors' => $this->upload->display_errors("<li>","</li>"));
    $this->load->view('index', $error);
}else{
    $data['PROFILE_DETAILS'] = $profile;
    $this->load->view('index', $data);
}

и затем отобразите ошибки в вашем представлении следующим образом:

<?php if($errors): ?>
   <ul><?php print $errors ?></ul>
<?php endif; ?>

и посмотрите, какие ошибки вы получаете.

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