如何禁止浏览器缓存静态文件(缓存太多。。内存使用量暴增)

jay_ 发布于 2013/05/14 10:11
阅读 2K+
收藏 1

最近在做个web项目,客户需要访问服务器上的大量图片

  1. 每一张图片都需要看,
  •   需求是需要根据图片内容人工判定缺陷、异常,所以要及时呈现
  1. 访问量基本很平均,没有哪一张是访问量高于其他的
  2. 显示是用js动态创建DIV,将背景图片设置为图片url实现
  3. 每次查询基本有5~50张左右的图片需要下载
  4. 图片主要有40kb(760x570)和80kb~120kb(1024x768)两种尺寸



服务器配置

  1. 图片访问直接由nginx作为静态服务器
  • 在nginx中针对jpg配置了不缓存,不过firefox还是有读取缓存的情况,但是chrome基本都是重新请求,不知道是不是设置不同
  • location ~* ^.+\.(jpg)$ {  
                root         /IMGG;  
                access_log   off;  
                expires      -1;
                add_header Cache-Control no-store;
            }

  • nginx没有配置缓存策略,因为图片访问基本属于平均分布


 

现在遇到的问题是

  1. 浏览器因为需要下载太多图片占用的内存一直狂飙。。。不知道如何能控制
  2. firefox随便查一会内存就是600M+ ~800M+的样子。。。
  3. chrome稍微少一点,用chrome自带的统计工具chrome://memory-redirect/看的话内存使用比firefox少很多

请教下各位如何能让浏览器在这种需求下占用尽可能少的资源?我所做的禁止缓存是否正确?


    


加载中
0
猪猪
猪猪
Url上加动态参数 如 ?_=123
0
jay_
jay_

引用来自“猪猪”的答案

Url上加动态参数 如 ?_=123
类似js css加版本的效果?这样应该可以解决掉firefox缓存的问题, 不知道这样浏览器,尤其是firefox是不是还是会疯狂的吃内存。。。
0
pfdoschina
pfdoschina

感觉不应该禁止客户端缓存。应该在客户端按需加载,只加载进入视野范围内的图片。如果确定已进入视野的图片,在移出视野后不再需要,可对内存进行释放。

0
sami
sami
试试jquery lazyload
0
jay_
jay_

引用来自“pfdoschina”的答案

感觉不应该禁止客户端缓存。应该在客户端按需加载,只加载进入视野范围内的图片。如果确定已进入视野的图片,在移出视野后不再需要,可对内存进行释放。

可以试一下~~    不过不知道这样浏览器是否可以控制自身的内容使用。。 貌似还是会占用很多内存
0
leo108
leo108
图片多还不做缓存?完全不能理解你的思路
0
jay_
jay_

引用来自“leo108”的答案

图片多还不做缓存?完全不能理解你的思路
因为图片太多 , 这个系统的作用就是浏览大量图片,而且是不重复的。。。 遇到的问题是浏览器下载了太多图片,占用内存太大
0
hmh
hmh

我的理解:缓存和内存过大没关系的吧。

0
jay_
jay_

引用来自“hmh”的答案

我的理解:缓存和内存过大没关系的吧。

我也不确定,但是 现在浏览的图片太多和浏览器的内存使用有着直接的关系, 不知道怎么样能样浏览器自动“丢弃”之前访问过的图片/文件,
Cavalier
Cavalier
自动丢弃。 只有在后面加动态参数吧
0
jay_
jay_

引用来自“jay_”的答案

引用来自“hmh”的答案

我的理解:缓存和内存过大没关系的吧。

我也不确定,但是 现在浏览的图片太多和浏览器的内存使用有着直接的关系, 不知道怎么样能样浏览器自动“丢弃”之前访问过的图片/文件,

这样:“ ?_=123”? 

但是我大量图片时不重复的 这样会丢弃老图片吗?

返回顶部
顶部