【问题标题】:How to add a Cache-Control header to my static files hosted on Heroku?如何在 Heroku 上托管的静态文件中添加 Cache-Control 标头?
【发布时间】:2015-03-07 15:05:03
【问题描述】:

我想启用图像、css 和 java 脚本文件的浏览器缓存。

https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers

heroku 文章在其结论中这样说:

“一旦了解了 HTTP 缓存背后的概念,下一步就是在您的应用程序中实现它们。大多数现代 Web 框架使这成为一项微不足道的任务。”

谁能告诉我怎么做这个琐碎的任务?我有一个 django-python 应用程序。

【问题讨论】:

    标签: django heroku


    【解决方案1】:

    您的静态资源实际上应该由 nginx 或 apache 等网络服务器提供,而不是直接来自 django,而是为了回答您的问题,django 包含一个 staticfiles 应用程序,假设您正在使用它来管理这些资源,如果是这样,使用

    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage'

    在您的 settings.py 文件中启用 django 对静态文件的缓存。

    c.f https://docs.djangoproject.com/en/1.6/ref/contrib/staticfiles/#cachedstaticfilesstorage https://docs.djangoproject.com/en/1.7/ref/contrib/staticfiles/#cachedstaticfilesstorage

    [1.6 链接对它的工作原理有更多解释]

    对于 django 中的整体缓存,我建议阅读 https://docs.djangoproject.com/en/1.7/topics/cache/ 您可以在其中看到如何使用中间件进行站点级缓存或使用 cache_control 装饰器进行视图缓存,如下所示:

    从 django.views.decorators.cache 导入缓存控制

    @cache_control(must_revalidate=True, max_age=3600) def my_view(request): # ...

    【讨论】:

      【解决方案2】:

      图像、css 和 javascript 等静态文件应由网络服务器(例如 nginx 的 Apache)直接提供,而不是由 Django 提供。因此,您应该在 Web 服务器配置中配置任何缓存,而不是 Django。

      如果您在 Heroku 上托管您的 Django 项目,他们似乎根据 this article 推荐 whitenoise

      【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2023-01-14
      • 2013-03-20
      • 2012-07-06
      • 2011-03-04
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2021-10-28
      相关资源
      最近更新 更多