2012-03-16 22 views
6

Khi tôi thêm appcache vào webapp của tôi chạy jquery di động, tất cả các cuộc gọi ajax yêu cầu json-files từ máy chủ của tôi làm việc. Tệp kê khai của tôi trông giống như sau:Làm cách nào để tôi cho phép các yêu cầu json khi sử dụng tính năng appcache của HTML5?

CACHE MANIFEST 

CACHE: 

index.html 
scripts/jquery-1.7.1.min.js scripts/jquery.flot.min.js 
scripts/jquery.flot.threshold.min.js 
scripts/jquery.mobile-1.0.1.min.js 
styles/jquery.mobile-1.0.1.min.css 
styles/touchStyles.css 
styles/styles.css 

NETWORK: 

index.appcache 
dataFetchAndDraw.js 
initJson 

Trường hợp initJson là một trong các cuộc gọi không hoạt động. Tôi đã cố gắng nhập địa chỉ đầy đủ (aaa: bbb: ccc: ddd: 6565/initJson) cũng không thành công.

Trong file .htaccess của tôi tôi chỉ có này một dòng:

AddType text/cache-manifest .manifest 

Trả lời

2

Tôi đã có một vấn đề tương tự với một ứng dụng tôi đã làm việc trên, vấn đề tôi đã có được lá cờ nhớ cache trong cuộc gọi ajax được mặc định đúng.

Tôi thấy rằng khi tôi thêm

cache : false 

để yêu cầu GET ajax của tôi yêu cầu lượt truy cập máy chủ. (http://api.jquery.com/jQuery.ajax/)

10

Tôi vừa gặp sự cố này và phải thêm ký tự đại diện vào phần NETWORK của tệp kê khai để cho phép trình duyệt truy cập mạng cho mọi tài nguyên không được lưu trong bộ nhớ cache.

NETWORK: 
* 
http://* 

Bạn cần cả hai mục nhập ký tự đại diện ở trên để hỗ trợ tất cả các trình duyệt.

Tôi cũng tìm thấy appcachefacts.info một tài nguyên hữu ích để hiểu điều này và các chi tiết cụ thể khác về appcache. Tôi khuyên bạn nên đọc hết cách này trước khi tiếp tục đường cong học tập appcache:

Phần NETWORK liệt kê tất cả các URL có thể được tải qua Internet. Nếu ứng dụng của bạn bao gồm bất kỳ cuộc gọi API nào, hãy đảm bảo liệt kê chúng tại đây. Lưu ý rằng đây là danh sách các tiền tố URL, vì vậy nếu tất cả các cuộc gọi mạng của bạn bắt đầu bằng http://example.com/api/, đó là tất cả những gì bạn cần đưa vào.

Nếu bạn muốn cho phép truy cập các URL tùy ý (tập lệnh, bảng định kiểu, cuộc gọi API, bất kỳ thứ gì), bao gồm *, http: // * và https: // * trong phần này. (Chrome và Safari tôn trọng dấu *; Firefox cần http: // * và https: // *.)

+1

Điều này thực sự phải là mặc định. HTML5 AppCache dường như không được triển khai hay chỉ định rõ ràng. Trình duyệt sẽ hiển thị trang được lưu trong bộ nhớ cache và sau đó tải xuống một trang mới trong nền nếu có kết nối để cập nhật bộ nhớ cache với mọi lần tải lại. Nhưng thay vào đó nó buộc một loại chế độ ngoại tuyến, ngay cả khi người dùng có kết nối. –

0

Tôi sẽ giải quyết vấn đề này ngay hôm nay. Nhưng trong trường hợp công việc của tôi chỉ với hai bước:

  1. $.ajax({ url: "/myurl", cache: false, ...})
  2. Config phiên appcache NETWORK với

Tôi hy vọng nó hữu ích cho bạn.

Các vấn đề liên quan