Стационарный файл флагов Cache-Control
Я пытаюсь установить разумный срок действия кеша для моих файлов JS во время разработки. У меня стандартная настройка, где HTML, CSS и JS живут в каталоге static
.
docs упоминать об этом, но для жизни меня я не могу заставить это работать. Я пробовал использовать оба метода, сначала
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
Оба не имели никакого эффекта, мои JS файлы в /static все еще возвращаются с таймаутом кэша по умолчанию,
Cache-Control: public, max-age=43200
Любые указатели оценили.
Ответы
Ответ 1
У меня была эта проблема, и я не мог найти ответ онлайн, который работал у меня.
Тогда я понял, что мои статические файлы вообще не подаются из Flask! Flask только генерирует мой HTML. Статические файлы обслуживаются непосредственно моим веб-сервером (Apache в моем случае, ваш может быть Nginx или что-то еще).
Вот инструкции для Apache.
Сначала установите модуль mod_expires:
sudo a2enmod expires
Затем добавьте что-то вроде этого в ваш файл .htaccess
:
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/* "access plus 1 year"
Подробнее о том, как настроить его в руководстве Apache.
Ответ 2
Вы можете посмотреть webassets для управления истечением срока действия кеша. Он работает как в разработке, так и в производственной среде.