2012-07-06 41 views
16

Tôi đang cố gắng đặt hết hạn bộ nhớ cache hợp lý cho các tệp JS của mình khi đang phát triển. Tôi có thiết lập chuẩn, trong đó HTML, CSS và JS đang sống trong thư mục static.Flask static file Cache-Control

docs đề cập đến điều này, nhưng đối với cuộc sống của tôi, tôi không thể làm việc này. Tôi đã thử cả hai phương pháp ngụ ý, đầu tiên

class MyFlask(flask.Flask): 
    def get_send_file_max_age(self, name): 
     if name.lower().endswith('.js'): 
      return 60 
     return flask.Flask.get_send_file_max_age(self, name) 

app = MyFlask(__name__) 

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

Cả hai đã không có hiệu lực thi hành, các file JS của tôi dưới/tĩnh vẫn đang quay trở lại với thời gian chờ bộ nhớ cache mặc định,

Cache-Control: public, max-age=43200 

Bất kỳ con trỏ nào được đánh giá cao.

+4

1. Bạn có sử dụng máy chủ dev bình hoặc proxy http như nginx không? 2. Bạn nên sử dụng '' return super (MyFlask, self) .get_send_file_max_age (name) '' thay vì '' return flask.Flask.get_send_file_max_age (self, name) ''. – Jarus

+0

Lớp trên hoạt động với tôi, sử dụng máy chủ phát triển bình defualt. –

+0

Vì những lý do này và hiệu suất i (và từ những gì tôi đã nghe nhiều người khác) cho phép các tệp tĩnh của tôi được phục vụ trực tiếp bởi bất kỳ máy chủ web (nginx/apache) nào tôi đang sử dụng. –

Trả lời

0

Bạn có thể muốn xem webassets để quản lý bộ nhớ cache hết hạn. Nó hoạt động trong cả môi trường phát triển và sản xuất.

2

Tôi gặp sự cố này và không thể tìm thấy câu trả lời trực tuyến phù hợp với tôi.

Sau đó, tôi nhận ra rằng các tệp tĩnh của tôi không được phân phát từ Flask! Flask chỉ tạo ra HTML của tôi. Các tập tin tĩnh được phục vụ trực tiếp bởi máy chủ web của tôi (Apache trong trường hợp của tôi, bạn có thể là Nginx hoặc cái gì khác).

Dưới đây là hướng dẫn dành cho Apache.

Đầu tiên cài đặt các module mod_expires:

sudo a2enmod expires

Sau đó, thêm một cái gì đó như thế này để tập .htaccess của bạn:

ExpiresByType text/css "access plus 1 year" 
ExpiresByType application/javascript "access plus 1 year" 
ExpiresByType image/* "access plus 1 year" 

tin chi tiết về làm thế nào để cấu hình nó trong Apache manual.