在JSP叶面里面,引用一张图片 <td><img src="http://localhost/xxxx.bmp" width="800" height="600"></td>
第一次请求的时候,这张图片就会被下载,然后缓存入
C:\Documents and Settings\adminstrator\Local Settings\Temporary Internet Files
目录,以后访问将不会再从服务器下载在个这图片了!除非这个jsp叶面设置no cache
,只要按照下面的设置,每次都会重新重服务器下载叶面
<META http-equiv="Content-Language"Content="zh-CN">
<META http-equiv="Content-Type" content="text/html; charset=GBK">
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store,must-revalidate,post-check=0,ptr-check=0">
<META http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,no-store,must-revalidate,post-check=0,ptr-check=0");
response.setHeader("Expires","-1");
%>这是我开始的一个理解啊!可是我昨天测试的时候发现!就算我按照上面的写了!图片也只用下载一次!而并不是我之前理解的,只要设置成no-cache,每次请求都要从服务器重新下载图片!
那到底上面那些no-cache究竟能做些什么事情啊?我都糊涂了阿!有明白的人吗?给我说说啊!谢谢!而我一个Jsp页面什么都不写,没有任何no-cache的语句。我每次请求他都还要从服务器下载一次这个Jsp文件!跟我理解的也不一样!不知道到底是怎么样的!555
第一次请求的时候,这张图片就会被下载,然后缓存入
C:\Documents and Settings\adminstrator\Local Settings\Temporary Internet Files
目录,以后访问将不会再从服务器下载在个这图片了!除非这个jsp叶面设置no cache
,只要按照下面的设置,每次都会重新重服务器下载叶面
<META http-equiv="Content-Language"Content="zh-CN">
<META http-equiv="Content-Type" content="text/html; charset=GBK">
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store,must-revalidate,post-check=0,ptr-check=0">
<META http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,no-store,must-revalidate,post-check=0,ptr-check=0");
response.setHeader("Expires","-1");
%>这是我开始的一个理解啊!可是我昨天测试的时候发现!就算我按照上面的写了!图片也只用下载一次!而并不是我之前理解的,只要设置成no-cache,每次请求都要从服务器重新下载图片!
那到底上面那些no-cache究竟能做些什么事情啊?我都糊涂了阿!有明白的人吗?给我说说啊!谢谢!而我一个Jsp页面什么都不写,没有任何no-cache的语句。我每次请求他都还要从服务器下载一次这个Jsp文件!跟我理解的也不一样!不知道到底是怎么样的!555
<%
response.setHeader(”Expires”,”0″);
response.setHeader(”Cache-Control”,”no-store”);
response.setHeader(”Pragrma”,”no-cache”);
response.setDateHeader(”Expires”,0);
%>
有些时候这个确实不是很好用,但是有的时候却很管用,呵呵,也找不到相应的解释,如果lz用了apache的话,那么就是apache缓存了图片,如果lz没用apache的话试一试加上下面这句看看<META HTTP-EQUIV="imagetoolbar" CONTENT="no">
2 JSP等页面可以通过如下组合实现
http://www.java2000.net/viewthread.jsp?tid=64953 验证的方法,用Firefox + Firebug 监控 net里面的链接返回情况就知道了。
<img src="image.jsp?<%=Long.toString(System.currentTimeMillis(), 36)%>">
<img src="http://localhost/xxxx.bmp?<%=Long.toString(System.currentTimeMillis(), 36)%>" width="800" height="600">
每次访问包含上面这句的 JSP 页时,它都会把一由当前服务器时间转换来的字符串加到图片连接后面,这样每次刷新 JSP 页面,浏览器会看到一个完全不同的图片 URL(只是?后面的不同),当然不会再用缓存内容了,而服务器收到 xxxx.bmp 请求时会忽略 ? 后面的东西。
我也比较迷惑
不过我通常的做法
图片改变了
将图片名也改变
将<img src="..."/>这里的路径也改变
<META http-equiv="Cache-Control" content="no-cache,no-store,must-revalidate,post-check=0,ptr-check=0">
上面这些信息是给服务器看的,当请求带上面标签的网页时,服务器会将上面标签中的内容(当然是服务器读取网页文件内容后发现的)以一定形式放到响应头中,当浏览器收到服务器的 HTTP 响应信息时(此响应信息由响应头和响应体两部分组成,响应头中是一些辅助信息例如文件是否应该被缓存文件最后修改时间文件内容类型即MIME等,而响应体为请求的文件内容本身)从响应头中会得知此文件不应作缓存处理,按 HTTP 协议浏览器确实不应该再缓存此文件,但浏览器内部实现千差万别,它完全可以不照做,还是缓存文件,结果你无论如何刷新,显示的始终是缓存内容。当然好的浏览器也会通过分析 HTML 的 META 标签来决定是否应该缓存网页文件,即便响应头中没有说明是否该做缓存处理。
我一个Jsp页面什么都不写,没有任何no-cache的语句。我每次请求他都还要从服务器下载一次这个Jsp文件!按说这个Jsp文件应该缓存了啊
楼主【nil2000】截止到2008-06-29 22:54:53的历史汇总数据(不包括此帖):
发帖数:60 发帖分:12450
结贴数:58 结贴分:12040
未结数:2 未结分:410
结贴率:96.67 % 结分率:96.71 %
值得尊敬
竹子 你这个是怎么做的啊????每个新发的帖子都会自动有一个这个吗?
你的程序放在csdn的服务器上?
我一个Jsp页面什么都不写,没有任何no-cache的语句。我每次请求他都还要从服务器下载一次这个Jsp文件! 按说这个Jsp文件应该缓存了啊
JSP 本质上就是 Servlet,一般第一次请求 JSP 页时,服务器会将 JSP 页解释成一个 Servlet 实现类源代码文件,随后编译此文件,实际上处理你的 HTTP 请求的是这个自动处理得到的 Servlet,而 Servlet 内部会自动处理 no-cache 问题,详细可以看看 Servlet 相关的源代码。
JSP页面上,就算显示的写no-cache语句块.
根据ieHTTPHeaders工具观察,发现访问的时候,静态的图片文件,JS文件,CSS文件仍然会缓存!
也就是说,只用下载一次,除非删除否则都不用再次下载!是否这样说明no-cache对静态文件根本没用啊?
而JSP文件无论写不写no-cache语句块,每次访问如果是刷新访问的话都需要重新下载.而且很奇怪的是
我加上no-cache语句块,然后在浏览器上输入link1回车.然后再输入link2回车.然后在用浏览器上的back按钮
从link2退回到link1.我理解我用了no-cache块在两个文件里,所以应该不会缓存,tomcat控制台应该输出
我在link1和link2叶面上写的system.out可是却什么都没输出!
我实在不知道到底怎么回事!1。到底使用了cache会缓存些什么?(现在测试发现起码no-cache对静态文件根本没用),
2。在什么情况下会缓存?
3。在什么情况下不会缓存(现在测试发现起码刷新的话怎么都回去服务器取一次的),
4。是否缓存就能提高一定的效率?命中率到底如何?no-cache语句块:
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store,must- revalidate,post-check=0,ptr-check=0">
<META http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,no-store,must-revalidate,post-check=0,ptr-check=0");
response.setHeader("Expires","-1");
%>第一次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:GET /nocacheTest.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:49:23 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000"
Last-Modified: Sat, 28 Jun 2008 13:36:34 GMT
Content-Type: image/bmp
Content-Length: 1444854 //下载 该Jsp上的一个图片link 长度为1444854
Date: Sat, 05 Jul 2008 12:49:23 GMT
通过刷新,第二次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:
GET /SpringRK/gzip.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //第二次访问仍然需要下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:57:53 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Sat, 28 Jun 2008 13:36:34 GMT
If-None-Match: W/"1444854-1214660194000"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 304 Not Modified
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000" //第二次访问不在下载图片
Date: Sat, 05 Jul 2008 12:57:53 GMT
JSP页面上,就算显示的写no-cache语句块.
根据ieHTTPHeaders工具观察,发现访问的时候,静态的图片文件,JS文件,CSS文件仍然会缓存!
也就是说,只用下载一次,除非删除否则都不用再次下载!是否这样说明no-cache对静态文件根本没用啊?
而JSP文件无论写不写no-cache语句块,每次访问如果是刷新访问的话都需要重新下载.而且很奇怪的是
我加上no-cache语句块,然后在浏览器上输入link1回车.然后再输入link2回车.然后在用浏览器上的back按钮
从link2退回到link1.我理解我用了no-cache块在两个文件里,所以应该不会缓存,tomcat控制台应该输出
我在link1和link2叶面上写的system.out可是却什么都没输出!
我实在不知道到底怎么回事!1。到底使用了cache会缓存些什么?(现在测试发现起码no-cache对静态文件根本没用),
2。在什么情况下会缓存?
3。在什么情况下不会缓存(现在测试发现起码刷新的话怎么都回去服务器取一次的),
4。是否缓存就能提高一定的效率?命中率到底如何?no-cache语句块:
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store,must- revalidate,post-check=0,ptr-check=0">
<META http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,no-store,must-revalidate,post-check=0,ptr-check=0");
response.setHeader("Expires","-1");
%>第一次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:GET /nocacheTest.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:49:23 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000"
Last-Modified: Sat, 28 Jun 2008 13:36:34 GMT
Content-Type: image/bmp
Content-Length: 1444854 //下载 该Jsp上的一个图片link 长度为1444854
Date: Sat, 05 Jul 2008 12:49:23 GMT
通过刷新,第二次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:
GET /SpringRK/gzip.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //第二次访问仍然需要下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:57:53 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Sat, 28 Jun 2008 13:36:34 GMT
If-None-Match: W/"1444854-1214660194000"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 304 Not Modified
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000" //第二次访问不在下载图片
Date: Sat, 05 Jul 2008 12:57:53 GMT
JSP页面上,就算显示的写no-cache语句块.
根据ieHTTPHeaders工具观察,发现访问的时候,静态的图片文件,JS文件,CSS文件仍然会缓存!
也就是说,只用下载一次,除非删除否则都不用再次下载!是否这样说明no-cache对静态文件根本没用啊?
而JSP文件无论写不写no-cache语句块,每次访问如果是刷新访问的话都需要重新下载.而且很奇怪的是
我加上no-cache语句块,然后在浏览器上输入link1回车.然后再输入link2回车.然后在用浏览器上的back按钮
从link2退回到link1.我理解我用了no-cache块在两个文件里,所以应该不会缓存,tomcat控制台应该输出
我在link1和link2叶面上写的system.out可是却什么都没输出!
我实在不知道到底怎么回事!1。到底使用了cache会缓存些什么?(现在测试发现起码no-cache对静态文件根本没用),
2。在什么情况下会缓存?
3。在什么情况下不会缓存(现在测试发现起码刷新的话怎么都回去服务器取一次的),
4。是否缓存就能提高一定的效率?命中率到底如何?no-cache语句块:
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store,must- revalidate,post-check=0,ptr-check=0">
<META http-equiv="Expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,no-store,must-revalidate,post-check=0,ptr-check=0");
response.setHeader("Expires","-1");
%>第一次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:GET /nocacheTest.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:49:23 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=C92C1AD74A7972C99D6175D2B07575ABHTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000"
Last-Modified: Sat, 28 Jun 2008 13:36:34 GMT
Content-Type: image/bmp
Content-Length: 1444854 //下载 该Jsp上的一个图片link 长度为1444854
Date: Sat, 05 Jul 2008 12:49:23 GMT
通过刷新,第二次访问/nocacheTest.jsp页面ieHTTPHeaders返回结果:
GET /SpringRK/gzip.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/html;charset=GBK
Content-Length: 198 //第二次访问仍然需要下载Jsp文件长度为198
Date: Sat, 05 Jul 2008 12:57:53 GMTGET /SpringRK/Tree.bmp HTTP/1.1
Accept: */*
Referer: http://localhost:8099/SpringRK/gzip.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Sat, 28 Jun 2008 13:36:34 GMT
If-None-Match: W/"1444854-1214660194000"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8099
Connection: Keep-Alive
Cookie: JSESSIONID=B921EEDF4D4C88C4D1FFA2C9D403C2C1HTTP/1.1 304 Not Modified
Server: Apache-Coyote/1.1
ETag: W/"1444854-1214660194000" //第二次访问不在下载图片
Date: Sat, 05 Jul 2008 12:57:53 GMT
.img?121fe4u14234加上一个随机的数字,就是让浏览器去再次读取这个图片,至于服务器是否返回 Not Modified 那是你的文件问题,如果他真的改变了,则一定会返回的。一般来说,不建议访问这类会变的内容用.gif这种静态的链接,而应该用.jsp/.do