我主要是一名前端开发人员/设计师,但最近,我一直在探索端到端的解决方案。昨天我使用平均堆栈完成了一个TODO应用程序,并希望开始探索我的VPS的部署选项。
话虽这么说,我被建议使用nginx作为反向代理用于提供静态资源?不幸的是,我陷入了简单的问题。
示例静态资源是什么?
哪些因素定义了静态资源?
有哪些非静态资源示例?
最后,我应该注意哪些奇怪的边缘情况?
对这个问题的无效感到抱歉。
答案 0 :(得分:7)
在这种情况下,静态资源是指未动态生成代码的静态资源,这意味着其内容不会从请求变为请求。
图像,JavaScript,CSS等都是这个的候选者。基本上,您为这些资源设置了大量的缓存时间,并且您的Nginx服务器可以在磁盘上(或在Redis或类似的东西中)保留副本,以便它们可以在不命中您的应用程序服务器的情况下返回到客户端。
记住在设置大缓存时间时使用版本化文件名很重要。例如,header-image-20140608.png意味着您可以拥有更高版本而不必担心旧版本仍在缓存中。
答案 1 :(得分:4)
静态资源不是动态生成的。
静态资源的示例是图像。每个请求都是一样的。它是文件系统上不需要任何处理的文件 - 您只需告诉nginx将此文件按原样发送给用户。
动态资源的一个示例是特定于请求它的用户的json数据(必须专门为该用户生成)。
使用动态资源,这些通常也是您自己的域特定代码执行,对数据库的请求等。
nginx应该提供静态内容的原因是因为它擅长以并行方式提供这些内容 - 它完全是为此而设计的。
如果您正在使用Ruby / Python / node.js / Java等,您还可以通过这些进程提供静态资源(只需调用File.open()
并开始流式传输数据) - 但它会慢很多,并且还可以降低可以提供服务的同步动态请求数。
答案 2 :(得分:1)
如果要更改文件内容,请确保阻止浏览器从缓存中选择此静态旧内容,请附上带有这些静态资源的URL的时间戳,以确保在需要时加载已升级的资源
答案 3 :(得分:0)
静态资源是指不会更改且不涉及服务器端代码的资源。
这通常意味着图像,CSS和一些客户端Javascript。