7

Vì mục đích hiệu suất, tôi muốn một số trang web của tôi sử dụng tài nguyên đã được lưu vào bộ nhớ cache để sử dụng ngoại tuyến (hình ảnh, CSS, v.v.) nhưng không có trang bản thân được lưu trong bộ nhớ cache vì nội dung sẽ được tạo động.Bỏ qua trang hiện tại từ HTML5 appcache ngoại tuyến nhưng sử dụng tài nguyên đã lưu trong bộ nhớ cache

Một cách để làm điều này sẽ là cấu trúc lại các trang của tôi để chúng tải nội dung động qua AJAX hoặc bằng cách tìm kiếm nội dung trong LocalStorage. Thông tin chi tiết có thể khác nhau, nhưng nói chung, một cái gì đó như thế.

Nếu có thể, tôi muốn tìm cách đơn giản hướng dẫn trình duyệt sử dụng tài nguyên được lưu vào bộ nhớ cache (một lần nữa, hình ảnh, CSS, v.v.) cho trang nhưng không thực sự lưu trữ nội dung HTML (được tạo động) chinh no.

Có cách nào để làm điều đó với HTML5 appcache ngoại tuyến không? Tôi cảm thấy rằng câu trả lời là "không" vì:

  • Bất kỳ trang nào chứa tệp kê khai sẽ được lưu vào bộ nhớ cache để tôi không thể chỉ định tài nguyên được lưu trong bộ nhớ cache trong chính trang đó.
  • Không có cách nào để nói với trang trước "sử dụng nội dung ngoại tuyến cho trang khác này nhưng không thực sự lưu trữ HTML trên trang đó". Bạn phải chỉ định trang, nghĩa là HTML sẽ được lưu vào bộ nhớ cache.

Tôi có sai về điều đó không? Có vẻ như có một số cách khéo léo (hoặc không khó khăn) xung quanh điều đó. Bây giờ tôi đã gõ nó ra, tôi tự hỏi nếu bao gồm các trang một cách rõ ràng trong phần NETWORK của bảng kê appcache sẽ làm các trick.

Trả lời

7

Câu trả lời của tôi là "có".

Tôi đã làm việc trên một ứng dụng web nơi tôi liệt kê tất cả các tài nguyên cần thiết trong tệp kê khai và đặt phần NETWORK thành *.

Tệp kê khai sau đó chỉ được đưa vào trang đích chính. Vì vậy, tất cả các tài nguyên được lưu trữ trong lần đầu tiên bạn truy cập vào trang web và nó hoạt động một điều trị.

Nói tóm lại,

  • một trong các trang của bạn phải bao gồm những biểu hiện và do đó sẽ được lưu trữ.

    có thể bạn có thể tải tệp kê khai trong iframe và không lưu toàn bộ trang, chỉ là một ý nghĩ.

  • danh sách tất cả các nguồn lực của bạn sẽ được lưu trữ trong CACHE phần

  • thiết lập phần NETWORK để *
+2

Oh crud, nó thực sự chỉ hoạt động như thế ra khỏi hộp với kịch bản trường hợp sử dụng điển hình mà tôi đã sử dụng. Bây giờ tôi không cảm thấy ngu ngốc vì không thử nghiệm điều đó trước tiên! – Trott

+1

bạn có chắc chắn rằng cách này trang không được lưu trong bộ nhớ cache sử dụng tài nguyên được lưu trong bộ nhớ cache không? Tôi không chắc lắm. điều này hoạt động, nhưng tôi nghĩ trang sẽ tải các tài nguyên từ máy chủ ... – pkyeck

+0

@pkyeck ứng dụng sẽ sử dụng tài nguyên được lưu vào bộ nhớ cache bất cứ khi nào có sẵn. Để có được nội dung mới nhất, bạn sẽ phải sửa đổi tệp kê khai hoặc xóa bộ nhớ cache. Một kỹ thuật gọn gàng là MD5 tổng hợp tệp kê khai của bạn và ghi giá trị trong tệp kê khai để khi tệp kê khai của tôi thay đổi giá trị MD5 thay đổi được ghi vào tệp kích hoạt cập nhật bộ nhớ cache. Điều này được thực hiện btw phía máy chủ. – gotomanners

2

Tôi khá chắc chắn rằng câu trả lời cho điều này là không có. Nếu bạn sử dụng phần Mạng trong Chrome, thì nó sẽ hiển thị tài nguyên nào được tải từ bộ nhớ cache và được tải từ máy chủ. Tôi đã cố gắng thiết lập appcache như mô tả ở trên và các tài nguyên luôn được tải từ máy chủ. Tôi có đúng khi giả định rằng nếu trang hiện tại không có trong appcache thì nó sẽ không bận tâm để kiểm tra trong appcache cho bất kỳ tài nguyên nào không?

0

Điều tôi thấy là đang làm việc là liệt kê những tệp mà bạn không muốn lưu trong bộ nhớ cache trong phần NETWORK: của tệp kê khai. Đối với tôi, điều đó có nghĩa là thêm * .asp * vào phần mạng. Bây giờ, không có tệp asp cổ điển nào hoặc tệp aspx được lưu trữ.

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