标签: static-files

无需用户在 nginx 上刷新即可提供更新文件的正确方法

这是一个非常核心的问题。我有一个在 nginx/gunicorn 配置中运行的 django 应用程序。Nginx 负责代理到gunicorn,但也直接服务于项目的静态文件。

问题是,当我更新静态文件时,浏览器不会加载最新版本。有时刷新会修复它,但有时它需要清除缓存。(我应该提到我正在使用 require.js,这没有帮助)。

为了缓解这个问题,我正在做这个技巧:

VERSION = '2.03'
STATIC_URL = '/static/' + VERSION + '/'
STATIC_ROOT = BASE_DIR + '/static/' + VERSION + '/'
Run Code Online (Sandbox Code Playgroud)

这样,当我更改静态文件时,我只需修改版本。但出于各种原因,我需要停止这样做。有没有办法配置 nginx 以便在可用时更好地提供更新的静态文件?

我只是不确定浏览器或 nginx 是否应该受到指责。

更新:这是我的 nginx 配置,删除了注释:

upstream mycoolsite_server {
  server unix:/webapps/mycoolsite/run/gunicorn.sock fail_timeout=0;
}

server {
    listen       80;
    server_name  www.mycoolsite.com;
    return       301 http://mycoolsite.com$request_uri;
}

server {

    listen   80;
    server_name mycoolsite.com 42.42.42.42;

    client_max_body_size 4G;

    access_log /webapps/mycoolsite/logs/nginx-access.log;
    error_log /webapps/mycoolsite/logs/nginx-error.log;

    location /static/ {
        alias   /webapps/mycoolsite/site/static/;
    }

    location /media/ {
        alias   /webapps/mycoolsite/site/media/;
    } …
Run Code Online (Sandbox Code Playgroud)

django nginx static-files gunicorn

3
推荐指数
1
解决办法
3523
查看次数

无法使用 Hugo 链接到静态文件

我有这个config.toml

baseURL = "https://my-username.github.io/blog/"
Run Code Online (Sandbox Code Playgroud)

并且有一个静态文件在static/img/foo.png.

现在,在content/posts/bar.md,我有以下内容:

---
title: "Bar"
---

![foo](img/foo.png)
Run Code Online (Sandbox Code Playgroud)

启动后图片没有显示hugo server,所以我检查了元素,发现 Hugo 为它生成了以下 URL:

http://localhost:1313/blog/posts/bar/img/hireme.png
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的;它应该是

http://localhost:1313/blog/img/hireme.png
Run Code Online (Sandbox Code Playgroud)

当我使用 时![foo](/blog/img/foo.png),图片显示正确,但是这很奇怪:/blog/是 的一部分baseURL,为什么我需要再次输入?

url templates static-files content-management-system hugo

3
推荐指数
1
解决办法
4931
查看次数

如何让快递从另一个上层目录提供静态文件?

如果我有一个具有以下文件夹结构的 nodejs express 应用程序:

-src - client - public - css - js - ... - views - server - server.js

  • 我如何从 server.js 文件提供 public 文件夹中的静态文件,因为它位于aboveindex.js 根位置?
  • 应该如何:

app.use(express.static();

看起来像?

- - 更新 - -

通过使用解决了这个问题: app.use(express.static(path.join(__dirname, '/../client/public')));

javascript model-view-controller static-files node.js express

3
推荐指数
1
解决办法
4812
查看次数

如何在 Cloud Foundry Staticfile Buildpack 中配置 CORS 策略以添加缺少的“Access-Control-Allow-Origin”标头

当我尝试使用Staticfile Buildpack访问托管在 Cloud Foundry 上的 JavaScript 文件时,我的浏览器拒绝加载它并在控制台中显示一条错误消息:

CORS 策略已阻止从源 '...' 访问 '...' 处的脚本:请求的资源上不存在 'Access-Control-Allow-Origin' 标头

如何在 Cloud Foundry Staticfile Buildpack 中配置跨域资源共享 (CORS)?

static-files cloud-foundry cors

3
推荐指数
1
解决办法
2179
查看次数

Django django.contrib.staticfiles.templatetags.static 已在 3.0 中删除:如何替换该功能?

我有以下代码块,其中.css返回相应的文件路径。
它是Theme-Class允许用户通过配置文件视图中的按钮更改网站主题(深色和浅色)的一部分。

def link(self) -> str:
        """
        Returns the link where the CSS file for this theme is located
        """
        return static('app_shared/colors_%s.css' % self.name())
Run Code Online (Sandbox Code Playgroud)

当它发生在 HTML-Template 中时,同样的问题可以通过更改{% load staticfiles %}{% load static %}. 显然,对于源代码,我需要另一种选择。

python django static-files django-staticfiles django-3.0

3
推荐指数
2
解决办法
2364
查看次数

node.js在heroku上提供的静态文件 - 这是一个好主意吗?

我有Backbone驱动的单页应用程序.应用程序包含几个文件:

index.html
javascripts/app.js
javascripts/vendor.js
stylesheets/app.css
images/ -> image assets
Run Code Online (Sandbox Code Playgroud)

我想为prerender.io我的应用添加服务,使其对SEO友好.对我这样做最简单的方法是使用express.js托管heroku:

var express = require('express');
var app = express();
app.use(require('prerender-node').set('prerenderToken', 'YOUR_TOKEN'));
// ...
app.listen(process.env.PORT || 5000);
Run Code Online (Sandbox Code Playgroud)

但也许express或实际上node不是最好的服务静态文件?也许heroku不是最好的服务静态文件?什么是最好的解决方案?您有什么推荐的吗?

seo static-files node.js single-page-application

2
推荐指数
1
解决办法
6378
查看次数

即时更改文件名以供下载

我通过将其原始名称重命名为来保存用户上传userID + '_' + new Date().getTime() + fileExt.我将文件属性存储在mongodb集合中:

{
name : String //generated name
, originalName : String //its original name
...
}
Run Code Online (Sandbox Code Playgroud)

现在当用户请求下载文件时,我必须向用户提供文件的原始名称(在db中保存,因此没有问题).

对于以下请求

GET /users/:userId/uploads/:fileId?type=download

我有这个处理程序

//the mongoose query
UserUpload.findById(req.params.fileId).exec(function(err, doc){
 var fileLocation = __dirname + '/public/uploads/users/' + req.params.userId + '/' + doc.name;

 if(req.query.type && req.query.type == 'download') {
   // I don't know what should I do now
   // Downloader.download(fileLocation, newName);
 } 

 });
Run Code Online (Sandbox Code Playgroud)

我读维基节点静态模块,但无法弄清楚如何做到这一点的工作吗?

download static-files node.js express

2
推荐指数
1
解决办法
9144
查看次数

Hapi.js - 无法在SPA中提供静态文件

我刚刚尝试制作SPA,但我无法解决index.html依赖关系(比如包括相关的css,js文件).所有js和css文件都无法加载到浏览器中并404在开发控制台中显示错误.

/root
|
|__public
|      ??? spa
|          ??? controllers
|          ??? css
|          ??? html
|          ??? js-self
|          ??? js-vendor
|          ??? services
|_____________ index.html
Run Code Online (Sandbox Code Playgroud)

路线申报

var assets = function(){
    return {
        method: 'GET',
        path: '/{param*}',
        handler: {
            directory :{
                path : 'public',
                index: false
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所有路线的顺序

  info: ================Registered routes=============
info: Route:    GET /employee
info: Route:    POST    /employee
info: Route:    PUT /employee
info: Route:    DELETE  /employee
info: Route:    POST    /signin
info: Route:    POST …
Run Code Online (Sandbox Code Playgroud)

static-files node.js hapijs

2
推荐指数
1
解决办法
1753
查看次数

静态目录中的Django模板?

将我的django模板放在静态目录中是一个好习惯吗?

无论如何,collectstatic都会将我的所有模板文件复制到静态目录中.为什么不直接将静态文件放在静态目录中?

django static-files

2
推荐指数
2
解决办法
448
查看次数

Django静态文件404错误

我试图在django项目中找到所有引导文件只在一个文件夹中并引用它们.为了做到这一点,我已经将这些行添加到setting.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Run Code Online (Sandbox Code Playgroud)

我的base.html看起来像这样:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Muplay</title>
    <link rel="stylesheet" type="text/css" href="{% static'css/bootstrap.css' %}">
    <script src="{% static 'js/bootstrap.js' %}"></script>
</head>
<body style="background-color: #F2F2F5">
    {% include 'snippets/nav.html' %}
    <div class="container">
        {% block content %}{% endblock %}
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我将此base.html扩展到其他html文件时,css和js文件在浏览器中成功加载.但是,问题是,在终端中,django返回404错误如下:

[10/Dec/2017 14:03:27] "GET /static/js/bootstrap.js HTTP/1.1" 404 1759
[10/Dec/2017 14:03:27] "GET /static/css/bootstrap.css HTTP/1.1" 404 1765
Run Code Online (Sandbox Code Playgroud)

为什么django会在浏览器中成功加载这些静态文件时返回404代码?

python static-files bootstrap-4 django-1.11

2
推荐指数
1
解决办法
4586
查看次数