2012-07-06 16 views
16

Geliştirme sırasında JS dosyalarım için makul bir önbellek süresi sonu ayarlamaya çalışıyorum. HTML, CSS ve JS'nin static dizininde yaşadığı standart kuruluma sahibim.Flask statik dosyası Önbellek Denetimi

docs bu söz, ama benim yaşam için bu işe alınamıyor. İlk ima iki yöntem,

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__) 

ve ikisi de hiçbir etkisi oldu

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

denedim altında benim JS dosyaları/statik hala geri varsayılan önbellek zaman aşımı ile geliyor

Cache-Control: public, max-age=43200 

Herhangi bir işaretçi beğeni topladı.

+4

1. Flask dev sunucusunu veya nginx gibi bir http proxy kullanıyor musunuz? 2. '' return flask.Flask.get_send_file_max_age (self, name) '' yerine '' return super (MyFlask, self) .get_send_file_max_age (name) '' kullanmalısınız. – Jarus

+0

Yukarıdaki sınıf, defualt flask geliştirme sunucusunu kullanarak benim için çalışıyor. –

+0

Bu ve performans nedenleri için i (ve diğerlerinden duyduğum kadarıyla) statik dosyalarımın kullandığım web sunucusu (nginx/apache) tarafından doğrudan sunulmasına izin verin. –

cevap

0

Önbellek bitiminden yönetmek için webassets bakmak isteyebilirsiniz. Hem geliştirme hem de üretim ortamında çalışır.

2

Bu sorunu yaşadım ve benim için çalışan bir çevrimiçi cevabı bulamadım.

Sonra statik dosyalarının Flask'tan hiç sunulmadığını fark ettim! Flask sadece HTML'mi üretir. Statik dosyalar doğrudan web sunucum tarafından sunulur (benim durumumda Apache, sizin Nginx veya başka bir şey olabilir).

İşte Apache'nin talimatları.

İlk mod_expires modülü yükleyin:

sudo a2enmod expires

Sonra .htaccess dosyaya böyle bir şey ekleyin: Apache manual bunu nasıl yapılandırılacağı üzerinde

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

fazla ayrıntı.

İlgili konular