浏览器上的 Django Nginx 静态文件缓存

Posted

技术标签:

【中文标题】浏览器上的 Django Nginx 静态文件缓存【英文标题】:Django Nginx static file caching on browser 【发布时间】:2015-02-14 08:11:55 【问题描述】:

我正在尝试配置 nginx 以利用浏览器上的静态文件缓存。我的配置文件如下

server 

listen   80;
server_name localhost;

client_max_body_size 4G;

access_log /home/user/webapps/app_env/logs/nginx-access.log;
error_log /home/user/webapps/app_env/logs/nginx-error.log;

location /static/ 
    alias   /home/user/webapps/app_env/static/;


location /media/ 
    alias   /home/user/webapps/app_env/media/;
    
...

当我添加以下缓存配置时,服务器无法加载静态文件,我无法重新启动我的 Nginx。

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ 
    expires 365d;

nginx-error 日志显示 open() "/usr/share/nginx/html/media/cover_photos/292f109e-17ef-4d23-b0b5-bddc80708d19_t‌​humbnail.jpeg" failed (2: No such file or directory)

我在网上做了很多研究,但无法解决这个问题。

谁能帮助我或者给我一些关于在 Nginx 中实现静态文件缓存的建议?谢谢!

【问题讨论】:

Django Nginx Browser Caching Configuration的可能重复 【参考方案1】:

为了缓存静态文件,我建议你这样做

location /static/ 
  alias /home/ubuntu/app/staticfiles/;
  expires 365d;

对于“没有这样的文件或目录”错误确实会运行

    ./manage.py collectstatic

【讨论】:

【参考方案2】:

也许运行./manage.py collectstatic

【讨论】:

嗨@Steven Xie,我们需要在更改nginx配置后收集静态数据吗? 是的,如果您更改了 Nginx 配置的静态位置。默认情况下,它会将所有静态文件收集到该位置。如果您更改了它,最好再次运行它。

以上是关于浏览器上的 Django Nginx 静态文件缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 中缓存静态文件

项目重新部署后图片和静态文件加载不出来解决方法

使用nginx缓存服务器上的静态文件

如何在nginx中缓存静态文件

uwsgi服务静态文件的Nginx缓存

nginx优化:使用expires在浏览器端缓存静态文件