2013-03-05 23 views
28

Tôi đã chuyển đổi một trang HTML thuần tuý sang HMTL5/CSS3 với bố cục đáp ứng và vì lý do bảo mật (do người bảo mật quyết định) trang không bao giờ được lưu vào bộ nhớ cache.Làm cách nào để ngăn trang html5 khỏi bộ nhớ đệm?

Trang trước đây đã sử dụng <meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Expires" content="-1"> để ngăn trang bị lưu vào bộ nhớ cache.

Điều gì sẽ thay thế điều này trong HTML5? Làm cách nào để ngăn trang html lưu trong bộ nhớ cache trong ứng dụng khách?

Tôi đã dành một tuần đọc về tệp kê khai, nhưng chúng dường như hoàn toàn trái ngược với những gì tôi muốn khi đính kèm tệp kê khai rõ ràng khiến trang được đính kèm vào bộ nhớ cache.

Và vui lòng không giới thiệu lại định nghĩa w3c về các yếu tố meta hiện được phép - Tôi hiểu rằng HTML5 không bao gồm các yếu tố cache-control hoặc Pragma trong các yếu tố meta.

Tôi cần phải biết nó bao gồm điều gì sẽ ngăn trang được lưu vào bộ nhớ cache.

+4

Bạn cũng có thể sử dụng tiêu đề http thực tế thay vì tiêu đề html giả. http://www.mnot.net/cache_docs/ –

Trả lời

31

Trong phần đầu của mã bạn cần phải sử dụng này:

<!DOCTYPE html> 
<html manifest="manifest.appcache"> 
... 

Sau đó tạo manifest.appcache với nội dung như:

 
CACHE MANIFEST 

# Cache manifest version 1.0 

# no cache 

NETWORK: 
* 
+3

Và để thêm vào câu trả lời @ n1ckolas, hãy xem http://www.w3.org/TR/html5/browsers.html#manifests để biết chi tiết cụ thể. –

+1

Cảm ơn, công việc đó để ngăn chặn tệp từ bộ nhớ đệm, nhưng bây giờ nó bật lên thanh thông tin trong Firefox cho biết: "Trang web này yêu cầu lưu trữ dữ liệu trên máy tính của bạn để sử dụng ngoại tuyến". Mà một lần nữa là hoàn toàn trái ngược với những gì tôi muốn xảy ra. Rất khó chịu và sẽ không quá thân thiện với người dùng đối với người dùng mới làm quen của chúng tôi - chúng tôi phục vụ cho các chuyên gia chăm sóc sức khỏe ít hiểu biết hơn về Internet. Dù sao để giữ bản kê khai và mương thanh thông tin hay đây chỉ là cách với firefox? – gps03

+0

Tôi không thực sự chắc chắn ... Bạn có thể di chuyển nó vào câu hỏi riêng biệt, tôi vui mừng khi thấy câu trả lời :) – n1ckolas

4

Tôi không thích appcache một lượng lớn. Nó gần như hoạt động tốt nhưng có thể là một nỗi đau không thực sự. Trong khi làm một số mã refactoring, tôi nhận ra rằng sau khi đăng xuất, tôi có thể duyệt trở lại trang cuối cùng. Tất nhiên, làm mới trình duyệt nó sẽ buộc người dùng trở lại để đăng nhập nhưng điều này là không mong muốn.

Sau khi tìm kiếm xung quanh và thấy các tùy chọn, tôi bắt đầu cảm thấy hơi thất vọng. Tôi không muốn sử dụng appcache. Sau đó tôi nhận ra rằng mã của tôi đã chuyển hướng đến trang đăng nhập sau khi hủy phiên và có ý tưởng, nếu tôi chuyển hướng đến trang chủ thay thế thì sao? Và thì đấy, trang đã được tải, phiên kiểm tra (và tất nhiên là không có), người dùng chuyển hướng để đăng nhập. Đã giải quyết được sự cố.

3

Tôi đã gặp khó khăn với cùng một vấn đề trong một thời gian. Điều gì làm việc cho tôi - ít nhất là trong Chrome, FF và IE đang làm như sau:

1) tham chiếu tệp kê khai <html lang="nl" manifest="filename.appcache"> Từ những gì tôi hiểu, điều này sẽ lưu trữ mọi thứ trong tài liệu HTML này tập tin là cần thiết để ngăn chặn điều này xảy ra:

2) sử dụng một filename.appcache file manifest với các nội dung sau đây mà về cơ bản nói: cho tất cả các file, không đọc từ bộ nhớ cache nhưng từ máy chủ mạng:

CACHE MANIFEST 
# 2015-09-25 time 20:33 UTC v 1.01 
NETWORK: 
* 


3) một bước thứ ba là bắt buộc: mỗi khi bạn tải lên một phần (một phần) cập nhật trang web của bạn, cũng thay đổi tệp kê khai bằng cách thay đổi dấu ngày và giờ trong dòng chú thích (#). Tại sao? Bởi vì nếu bạn không thay đổi tệp kê khai, nó sẽ không được đọc và nó sẽ mặc định bước 1 và do đó bộ nhớ cache và đọc từ bộ nhớ cache. Thực tế là tệp kê khai được thay đổi, tuy nhiên, thực thi tệp kê khai sẽ được đọc lại và do đó thực thi rằng lệnh "không đọc từ bộ nhớ cache nhưng đọc từ máy chủ mạng" trong đó, được áp dụng lại.

0

previous answer có thể không liên tục hoạt động để ngăn bộ nhớ đệm hoặc xóa bộ nhớ cache hiện có trong chrome nhưng có một công việc xung quanh.

1) Để xóa bộ nhớ cache hiện có trong chrome, nó có thể là cần thiết để cập nhật tất cả file của trang web (ví dụ như bằng cách liên kết đến một file css mới trên mỗi trang) cùng với một bản cập nhật của cache- manifest trước khi bộ nhớ cache hiện có trong chrome bị xóa khi lần truy cập thứ hai của một trang (vì "dòng chảy" của cách trang được hiển thị: lần đầu tiên trang được truy cập, trình duyệt đọc và lưu trữ tệp kê khai, trong khi tiếp tục tải từ bộ nhớ cache hiện tại. Chỉ khi lượt truy cập thứ hai sẽ được cập nhật mới được lưu trữ được đọc và áp dụng).

2) và nếu không có cách nào giúp được, thì có thể bao gồm tập lệnh trong tệp kê khai để kiểm tra tệp kê khai mới và tải lại và sử dụng tệp kê khai mới. Điều này đã làm các trick và giải quyết tất cả các trường hợp còn lại tôi đã thử nghiệm cho nơi tập tin vẫn được lưu trữ liên tục trong chrome. Tôi đã tìm thấy tập lệnh này trên this page bởi Jason Stimpel.

<script type="text/javascript"> 
window.addEventListener('load', function (e) { 
window.applicationCache.addEventListener('updateready', function (e) { 
     window.location.reload(); 
    }, false); 
}, false); 
</script> 
Các vấn đề liên quan