首页 新闻 会员 周边

网站图片防盗链后, 如何做客户端缓存?

0
悬赏园豆:30 [已解决问题] 解决于 2012-01-06 10:03

是这样的. 一般网站访问过一次之后, 再刷新后, 浏览器会从缓存中读取并显示图片. 状态为304.

写了一个处理*.jpg请求的handler之后. 防盗链是解决了. 可是这样所有的图片请求客户端都不缓存了, 全从新从服务器下载.

 

请问应该如何解决

问题补充:

 我觉得我没说明白.

如上图. 可以把这些js当做的说的图片, 反正都是静态文件.

上图是未加httphandler处理的js请求. 浏览器会缓存起来. 刷新的话会从本地获得, 状态为304.

如果用httphandler注册js请求之后. 所有的js文件都得通过handler输出.

这样, 客户端就不缓存这个js了. 每次都会从新下载, 每次返回200.

 

现在的问题是, 如何让浏览器缓存handler输出的文件(比如图片, js, xml, json)等等, 以减轻服务器带宽压力

MyCoolDog的主页 MyCoolDog | 初学一级 | 园豆:95
提问于:2012-01-04 23:18
< >
分享
最佳答案
0

从访问的时候开始拦截,如果是本站访问图片,则正确,如果是从别站连接过来,就屏蔽掉,除非他把图片下载了,再自己重新传上去,还差不多

我说的就是这种方法:http://www.cnblogs.com/cyq1162/archive/2010/08/26/1809169.html

这里也有两篇:http://www.cnblogs.com/jams742003/archive/2010/02/01/1660917.html

         http://www.cnblogs.com/jams742003/archive/2010/02/01/1661050.html

收获园豆:15
伊牛娃 | 菜鸟二级 |园豆:207 | 2012-01-05 22:59

事实上, 我忽略了一个问题. 如果是动态的输出内容. 刷新该页面,如论如何都会请求服务器.

而打开一个新的页面, 在监控中, 就能看到这些图是304了.

是我自己一开始多虑了. 不过也明白了原理.

详细说明见这个 http://kb.cnblogs.com/page/124879/HTTP Caching 优化网站

MyCoolDog | 园豆:95 (初学一级) | 2012-01-06 10:05
其他回答(1)
0

不知道你的图片防盗链的方法是如何写的:

http://paranimage.com/10-kinds-of-anti-picture-method-of-navigating-to-wwwsinacomcn/

这边10个防盗链的方法可以看看

那个第一个透明图片的我觉得不可靠,一般的用户是得不到图片,但是在chrome中,开发者工具中肯定可以得到这个图片,加水印是个不错的方法。

如果你不能接受水印的

用flash来显示图片,这样的话,还不错

http://tech.163.com/special/2011end/

收获园豆:15
chenping2008 | 园豆:9836 (大侠五级) | 2012-01-05 09:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册