2010-04-15 39 views
13

Tôi đang sử dụng các công cụ ứng dụng tại địa phương, và đôi khi các tập tin JS đang được lưu trữ giữa làm mới trang, và nó làm tôi bực bội vì tôi don không biết nếu có một lỗi trong mã javascript tôi đang cố gắng để viết, hoặc nếu bộ nhớ cache được hành động lên.Google App Engine: Làm thế nào để vô hiệu hóa bộ nhớ cache trên các tập tin 'tĩnh', hoặc làm cho bộ nhớ cache thông minh

Làm cách nào để tắt hoàn toàn bộ nhớ cache cho các tệp * .js? Hoặc có thể câu hỏi là, làm thế nào để có được thông minh, như dựa trên ngày sửa đổi cuối cùng.

Cảm ơn!

CẬP NHẬT- Vì vậy, hóa ra Chrome Dev (dành cho mac ít nhất) có vấn đề về bộ nhớ đệm, quay lại Chrome Beta để khắc phục tất cả điều này. Những câu trả lời vẫn là hữu ích tuy nhiên, nhờ

+0

Bạn đã thử phục vụ nó một cách tối giản để thử nghiệm? Bạn có thể có một máy chủ thư mục 'js' bởi một kịch bản python và khi bạn triển khai nó thay đổi thành địa chỉ tĩnh – OscarRyz

Trả lời

11

Dựa trên the docs, bạn có thể chỉ định một thời gian bộ nhớ cache hết hạn app-rộng:

Trừ nói cách khác, các trình duyệt web giữ lại tập tin mà họ tải từ một trang web cho một hạn chế khoảng thời gian. Bạn có thể định nghĩa một khoảng thời gian cache mặc định toàn cầu cho tất cả các trình xử lý tệp tĩnh cho một ứng dụng bằng cách bao gồm phần tử default_expiration, một phần tử cấp cao nhất. Bạn cũng có thể định cấu hình thời lượng bộ nhớ cache cho trình xử lý tệp tĩnh cụ thể. (Script xử lý có thể thiết lập khoảng thời gian bộ nhớ cache bằng cách trả lại các tiêu đề HTTP thích hợp cho trình duyệt.)

default_expiration

Khoảng thời gian một tập tin tĩnh phục vụ bởi một handler tệp tĩnh phải được lưu trữ trong trình duyệt của người dùng , nếu trình xử lý không chỉ định hết hạn của riêng nó. Giá trị là một chuỗi các số và đơn vị, được phân tách bằng dấu cách, trong đó đơn vị có thể là d trong ngày, h cho giờ, m cho phút và s trong vài giây. Ví dụ: "4d 5h" đặt hết hạn bộ nhớ cache thành 4 ngày và 5 giờ sau khi tệp được trình duyệt tải lần đầu tiên.

default_expiration là tùy chọn. Nếu bỏ qua, hành vi mặc định là cho phép trình duyệt xác định thời lượng bộ nhớ cache của chính nó.

... và nếu bạn muốn xác định thời hạn đối với thư mục-by-thư mục cơ sở:

hết hạn

Khoảng thời gian một tập tin tĩnh phục vụ bởi handler này nên được lưu trong trình duyệt của người dùng. Giá trị là một chuỗi các số và đơn vị, được phân tách bằng dấu cách, trong đó đơn vị có thể là d trong ngày, h cho giờ, m cho phút và s trong vài giây. Ví dụ: "4d 5h" đặt hết hạn bộ nhớ cache thành 4 ngày và 5 giờ sau khi tệp được trình duyệt tải lần đầu tiên.

Thử đặt chúng thành 0d0h hoặc 1 giây và xem có vô hiệu hóa bộ đệm ẩn hoàn toàn hay không.

+0

Tôi đã thử đặt nó thành 0, và bây giờ các tiêu đề có điều này:' Cache-Control: no-cache' tuy nhiên Chrome (đây là ứng dụng chỉ dành cho Chrome) vẫn đang lưu vào bộ nhớ cache. Có vẻ như trình duyệt có thể là vấn đề ..... – adamJLev

11

Một thực tế phổ biến được sử dụng bởi các trang web lớn là tài liệu bộ nhớ cache mãi mãi nhưng bao gồm một định danh duy nhất dựa trên phiên bản phát hành hoặc ngày vào url cho .js hoặc gọi .css. Ví dụ:

<script type="text/javascript" src="static/util.js?version=20100310"></script> 

Bằng cách này, bạn sẽ nhận được bộ nhớ đệm tối ưu cũng như các tệp cập nhật. Bí quyết duy nhất là tìm ra cách bao gồm số phiên bản cập nhật trong url của bạn, bạn có thể tự động hóa dựa trên môi trường triển khai của mình.

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