2014-10-01 4 views
2

Я использую Торнадо, чтобы служить и HTTP файл, который использует несколько файлов JavaScript, как это:Торнадо не проверяет Javascript файлы будут обновлены без обновления индекса

<script src="static/js/jquery-1.11.0.min.js" type="text/javascript"></script> 
<script src="static/js/stream.js" type="text/javascript"></script> 
<script src="static/js/d3.min.js"></script> 
<script src="static/js/d3.slider.js"></script> 

К сожалению, когда я изменить эти файлы, это Безразлично «Я понимаю, что они изменились и продолжают отвечать 304 ответами. Я попытался остановить эти ответы, отключив кеширование, но это не сработало.

Есть ли другие настройки, которые я должен устанавливать в Торнадо? Это ошибка, о которой я должен сообщить?

ответ

2

Использование RequestHandler.static_url. Он вернет версированный url (по умолчанию добавляет? V =), что позволяет кэшировать статические файлы на неопределенный срок.

шаги, чтобы включить его:

  1. Определение static_path в настройках, это каталог, из которого будут обслуживаться статические файлы:

    settings = { 
        'static_path': '/var/www/static/', 
        # other settings 
    } 
    
  2. Обеспечить эти настройки в приложении:

    app = tornado.web.Application(settings=settings, **kwargs) 
    
  3. static_url в шаблонах:

    <script src="{{ static_url('js/jquery-1.11.0.min.js') }}" type="text/javascript"></script> 
    <script src="{{ static_url('js/stream.js') }}" type="text/javascript"></script> 
    <script src="{{ static_url('js/d3.min.js') }}"></script> 
    <script src="{{ static_url('js/d3.slider.js') }}"></script 
    

Выход будет что-то вроде (проверить те ?v=hash)

<script src="/static/js/jquery-1.11.0.min.js?v=12d" type="text/javascript"></script> 
    <script src="/static/js/stream.js?v=34a" type="text/javascript"></script> 
    <script src="/static/js/d3.min.js?v=df3"></script> 
    <script src="/static/js/d3.slider.js?v=ad1"></script 
+0

Я предполагаю, что 'V' являются версия коды? – Seanny123

+0

Да, они генерируются автоматически с помощью хэша содержимого. –