静态和非静态资源之间的区别是什么?

时间:2014-06-08 17:08:42

标签: javascript nginx single-page-application reverse-proxy mean-stack

我主要是一名前端开发人员/设计师,但最近,我一直在探索端到端的解决方案。昨天我使用平均堆栈完成了一个TODO应用程序,并希望开始探索我的VPS的部署选项。

话虽这么说,我被建议使用nginx作为反向代理用于提供静态资源?不幸的是,我陷入了简单的问题。

示例静态资源是什么?

哪些因素定义了静态资源?

有哪些非静态资源示例?

最后,我应该注意哪些奇怪的边缘情况?

对这个问题的无效感到抱歉。

4 个答案:

答案 0 :(得分:7)

在这种情况下,静态资源是指未动态生成代码的静态资源,这意味着其内容不会从请求变为请求。

图像,JavaScript,CSS等都是这个的候选者。基本上,您为这些资源设置了大量的缓存时间,并且您的Nginx服务器可以在磁盘上(或在Redis或类似的东西中)保留副本,以便它们可以在不命中您的应用程序服务器的情况下返回到客户端。

记住在设置大缓存时间时使用版本化文件名很重要。例如,header-image-20140608.png意味着您可以拥有更高版本而不必担心旧版本仍在缓存中。

答案 1 :(得分:4)

静态资源不是动态生成的。

静态资源的示例是图像。每个请求都是一样的。它是文件系统上不需要任何处理的文件 - 您只需告诉nginx将此文件按原样发送给用户。

动态资源的一个示例是特定于请求它的用户的json数据(必须专门为该用户生成)。

使用动态资源,这些通常也是您自己的域特定代码执行,对数据库的请求等。

nginx应该提供静态内容的原因是因为它擅长以并行方式提供这些内容 - 它完全是为此而设计的。

如果您正在使用Ruby / Python / node.js / Java等,您还可以通过这些进程提供静态资源(只需调用File.open()并开始流式传输数据) - 但它会慢很多,并且还可以降低可以提供服务的同步动态请求数。

答案 2 :(得分:1)

  • 静态资源是不会经常更改的资源,除非需要,否则可以存储在客户端的浏览器端,以防止在Web服务器上加载并在客户端更快地加载站点。
  • 这些的一些例子是:images,javascript,css
  • 动态资源是在Web资源上更改的内容,主要是在特定于用户或项目的页面上不断更改的数据。
  • 为了确保您的静态数据减少服务器上的负载并确保客户端的快速性能,您需要处理各种服务器特定的配置,例如启用压缩js文件,正确呈现图像的标头内容。

如果要更改文件内容,请确保阻止浏览器从缓存中选择此静态旧内容,请附上带有这些静态资源的URL的时间戳,以确保在需要时加载已升级的资源

答案 3 :(得分:0)

静态资源是指不会更改且不涉及服务器端代码的资源。

这通常意味着图像,CSS和一些客户端Javascript。