2013-05-06 31 views
5

Tôi có trang web CodeIgniter chỉ định người dùng UUID khi trang đích được truy cập. Tải lại trang đích sẽ gán UUID mới, nhưng khi bạn bắt đầu tiến hành thông qua các biểu mẫu, UUID của bạn vẫn giữ nguyên. Tuy nhiên, có điều gì đó đang xảy ra Tôi không hoàn toàn hiểu khi nào người dùng nhấn nút quay lại và hành vi khác nhau tùy thuộc vào URL họ đến?Nút quay lại không làm mới trang nếu URL chứa thông số GET hoặc dấu gạch chéo theo sau?

Trường hợp 1: domain.com/somehash?key=value HOẶC domain.com/somehash/

Nếu bạn đến với url ở trên có chứa một tham số GET, gửi biểu mẫu đầu tiên (trong đó có uuid của bạn), và nhấn nút quay lại, bạn quay lại trang đích nhưng UUID của bạn không thay đổi.

Trường hợp 2: domain.com/somehash

Với không có tham số GET, nếu bạn gửi biểu mẫu đầu tiên (trong đó có uuid của bạn) và nhấn nút quay lại, bạn quay lại trang đích và nhận được một uuid MỚI.

Tôi đã thử nghiệm điều này trong Chrome và Firefox mới nhất, nó có được liên kết với một số loại chiến lược lưu trong bộ nhớ cache mà chúng triển khai không? Lý tưởng nhấn lại sẽ KHÔNG làm mới trang.

EDIT: Tôi nên lưu ý chúng tôi không thể sử dụng cookie cho công cụ này, do đó phiên là ra

Tiếp tục chỉnh sửa: Đơn giản chỉ cần đi domain.com/, thêm một dấu chéo ngược, dừng UUID từ làm mới khi nhấn nút quay lại. Có thể liên quan đến CodeIgniter routes.php hoặc .htaccess?

mục .htaccess liên quan:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Routes.php:

$route['default_controller'] = "home"; 
$route['404_override'] = ''; 

$route['(:any)'] = 'home/index/$1'; 
+0

sử dụng phiên() – Vector

+0

Bạn chỉ định UUID, php hoặc JS ở đâu? – Justin

+0

PHP, được tạo trong Bộ điều khiển trước khi được chuyển đến Chế độ xem trong CI. – xref

Trả lời

1

Hãy thử thiết lập các tiêu đề và xem nếu mà làm cho các hành vi phù hợp trong cả hai kịch bản:

$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->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

Thông tin thêm: http://ellislab.com/codeigniter/user-guide/libraries/output.html

+0

Không có thay đổi, có tham số GET hoặc dấu gạch chéo vẫn không làm tăng hiệu ứng khi nhấn Quay lại. Nếu không có một dấu gạch chéo ngược/GET đánh trở lại không lực lượng làm mới. – xref

+0

Lạ. Bạn có thể cập nhật câu hỏi của mình bằng php bạn sử dụng để nối UUID vào URL không? – Justin

+0

thực sự UUID chỉ là một trường biểu mẫu ẩn, được nhúng khi bạn nhấn vào trang đích, nó không xuất hiện trong URL. – xref