Skip to main content
 首页 » 编程设计

python之Tornado 不检查 Javascript 文件是否更新而不更新索引

2024年10月25日36Terrylee

我正在使用 Tornado 来提供使用多个 JavaScript 文件的 HTTP 文件,如下所示:

<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 响应进行响应。我尝试通过禁用缓存来停止这些响应,但这没有用。

我应该在 Tornado 中设置一些其他设置吗?这是我应该报告的错误吗?

请您参考如下方法:

使用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