我主要是一个前端的开发人员/设计师,不过最近我一直在探索端到端的解决方案。昨天,我使用平均堆栈完成了一个TODO应用程序,并希望开始探索到我的VPS的部署选项。
尽管如此,有人建议我使用nginx作为反向代理来服务静态资源?不幸的是,我被简单的问题困住了。
示例静态资源是什么?
什么因素定义了静态资源?
非静态资源的例子有哪些?
最后,有什么奇怪的边缘情况我应该知道吗?
很抱歉这个问题太幼稚了。
发布于 2014-06-08 17:12:35
在这种情况下,静态资源指的是不使用动态代码生成的资源,这意味着它的内容不会在请求之间发生更改。
图片,JavaScript,CSS等,都是这方面的候选人。基本上,您为这些资源设置了大量的缓存时间,您的Nginx服务器可以在磁盘上保留一个副本(或者在Redis或类似的文件中),这样它们就可以返回到客户端,而不必访问应用程序服务器。
在设置大量缓存时间时,记住使用版本化的文件名是很重要的。例如,头-映像-20140608.png,意味着您可以拥有一个更高的版本,而不必担心旧版本还在缓存中。
发布于 2014-06-08 17:13:32
静态资源不是动态生成的。
静态资源的一个示例是图像。每个请求都是一样的。这是一个文件系统上的文件,不需要任何处理--您只需告诉nginx将此文件发送给用户。
动态资源的一个例子是特定于请求它的用户的json数据(必须专门为该用户生成)。
对于动态资源,这些通常也是您自己执行的特定域代码、对数据库的请求等。
nginx之所以应该提供静态内容,是因为它擅长以并行方式提供该内容--它正是为此而设计的。
如果您使用的是Ruby/Python/node.js/Java等,那么您也可以通过这些过程提供静态资源(只需调用File.open()并开始流数据)--但是这样做要慢得多,而且还可以降低可以服务的同步动态请求的数量。
发布于 2014-06-09 18:56:55
当您要更改文件内容时,请确保防止浏览器从缓存中选择此静态旧内容,请使用这些静态资源的urls附加时间戳,以确保在需要时加载已提升的资源。
https://stackoverflow.com/questions/24108624
复制相似问题