是这样的. 一般网站访问过一次之后, 再刷新后, 浏览器会从缓存中读取并显示图片. 状态为304.
写了一个处理*.jpg请求的handler之后. 防盗链是解决了. 可是这样所有的图片请求客户端都不缓存了, 全从新从服务器下载.
请问应该如何解决
我觉得我没说明白.
如上图. 可以把这些js当做的说的图片, 反正都是静态文件.
上图是未加httphandler处理的js请求. 浏览器会缓存起来. 刷新的话会从本地获得, 状态为304.
如果用httphandler注册js请求之后. 所有的js文件都得通过handler输出.
这样, 客户端就不缓存这个js了. 每次都会从新下载, 每次返回200.
现在的问题是, 如何让浏览器缓存handler输出的文件(比如图片, js, xml, json)等等, 以减轻服务器带宽压力
从访问的时候开始拦截,如果是本站访问图片,则正确,如果是从别站连接过来,就屏蔽掉,除非他把图片下载了,再自己重新传上去,还差不多
我说的就是这种方法: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
事实上, 我忽略了一个问题. 如果是动态的输出内容. 刷新该页面,如论如何都会请求服务器.
而打开一个新的页面, 在监控中, 就能看到这些图是304了.
是我自己一开始多虑了. 不过也明白了原理.
详细说明见这个 http://kb.cnblogs.com/page/124879/HTTP Caching 优化网站
不知道你的图片防盗链的方法是如何写的:
http://paranimage.com/10-kinds-of-anti-picture-method-of-navigating-to-wwwsinacomcn/
这边10个防盗链的方法可以看看
那个第一个透明图片的我觉得不可靠,一般的用户是得不到图片,但是在chrome中,开发者工具中肯定可以得到这个图片,加水印是个不错的方法。
如果你不能接受水印的
用flash来显示图片,这样的话,还不错