2014-06-28 21 views
0

我有一个搜索结果页面,返回大约40个图像。我使用mongohq来存储我的图像。 现在这些图像将永远不会改变。他们将被删除或保持原样。客户端缓存的空间限制

所以,我的春天的servlet从mongoHq读取基于图像的ID

/app/download/{uniqueImageId} 

所有作品好后流的图像。除了流式传输图像的加载时间。我觉得这些图像对于这些独特的ID将保持不变,为什么不缓存它们。我可以添加一个适用于我上面的url类型的过滤器,并添加一个缓存头,我打算给一个非常长的值,比如可能会缓存一周的图片。

我的问题是,如果我开始告诉客户端的浏览器缓存所有这些40 +图像,它会缓存所有这些图像? 客户端没有任何空间限制吗?

您是否看到更好的选择来处理这种情况?

回答

1

我的问题是,如果我开始告诉客户端的浏览器缓存所有这些40 +图像,它会缓存所有这些图像?客户端没有任何空间限制吗?

当然,客户端有空间限制(全世界的存储空间也是有限的......嗯,对不起......)。用户可能会限制缓存空间,并且/或者浏览器仅自动获取可用于缓存的可用空间。

通常我会希望浏览器缓存总是一些兆字节(比方说100+),因此在会话中传输的所需图像(如图标)经常会被缓存。无论图片是否仍在缓存中,用户在三天后访问您的网站时,都取决于缓存大小和用户之间的活动。所以你永远不知道。

客户端或任何中间代理做什么都不在您的直接控制范围之内。您通过设置缓存标头所做的唯一事情就是说,暂时不刷新此资源是合法的。如果您在应用程序中设置了标头,请确保正确理解HTTP1.1标头。

您是否看到更好的选择来处理这种情况?

术语“更好”在这里不是很确切。你究竟需要优化什么?

如果您在同一图像集上有很多请求,可以通过将边缘服务器(如nginx)放在您的应用程序前配置为缓存逆向代理来减少服务器和数据库负载。在这种情况下,您自己的边缘服务器正在解释缓存标头。一般来说,如果应用程序在静态资源服务方面没有重大负载,我认为这是一个很好的设计。