Версіонування статичних файлів у Django

Як змусити браузер оновлювати кешовані файли після того як вони змінились

12.09.2015

Якщо ви стикнулись з проблемою, коли ви оновили файл на вашому веб-сайті, а користувачі надалі використовують кешовану браузером версію. А там був принципово змінений функціонал у Javascript, додані нові функції чи навіть виправлені баги. Та навіть якщо змінений дизайн CSS стилів.

Перше, що приходить на думку - це перейменувати файл щоб URL змінився і браузер закешував його нову версію. Чи додати якийсь "якір"

http://example.com/static/main.js#new_file
чи як це робить Google додати версію файлу
http://example.com/static/main.js?v=2

Але якщо він використовується у багатьох файлах, і таких статичних файлів багато, то руками постійно міняти версію — не зручно.
Тому я використовую Django тег, який це робить автоматично. Він зчитує дату останньої зміни статичного файлу і додає її до URL-адреси. Якщо раптом тег не знайшов цього файлу — то нічого і не додає.

Щоб почати використовувати, додайте app_tags.py до папки з вашою аплікацією і вкажіть його в INSTALLED_APPS. Або якщо у вас вже є файл де ви зберігаєте всі фільтри і теги, то просто додайте ще один — static_version, наведений нижче.
Використовувати його дуже просто:

{% static_version 'js/main.js' %}
Готові приклади коду:


Якщо вам сподобалась стаття — поділіться з друзями:  


Коментарі: