写有一个元素周期表页面,上面每个元素是一个小图片(约122张gif图,首先声明:使用一张图片解决不了问题)。
在使用时用window.open方式打开元素周期表页面。因为图片是不变的,希望缓存过后每次都从缓存中取而不是从服务器上重新下载所有的小图片。在使用http方式访问页面,弹出的元素周期表页面使用缓存中的图片。但使用https方式访问时在IE里每次都从服务器上下载所有的图片,连从本机的服务器下载都需要10秒钟的时间,很让人受不了。而在FireFox中使用http和https两种方式都从缓存中读取图片。借鉴禁止JSP缓存的方式:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");
%>
我使用下面的方式强制JSP页面缓存:
<%
response.setHeader("Pragma","cache");
response.setHeader("Cache-Control","store, cache");
response.setHeader("Expires","10080");
%>
但还是无济于事,各位有没有办法,谢谢!
在使用时用window.open方式打开元素周期表页面。因为图片是不变的,希望缓存过后每次都从缓存中取而不是从服务器上重新下载所有的小图片。在使用http方式访问页面,弹出的元素周期表页面使用缓存中的图片。但使用https方式访问时在IE里每次都从服务器上下载所有的图片,连从本机的服务器下载都需要10秒钟的时间,很让人受不了。而在FireFox中使用http和https两种方式都从缓存中读取图片。借鉴禁止JSP缓存的方式:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");
%>
我使用下面的方式强制JSP页面缓存:
<%
response.setHeader("Pragma","cache");
response.setHeader("Cache-Control","store, cache");
response.setHeader("Expires","10080");
%>
但还是无济于事,各位有没有办法,谢谢!
String modDate = d.toGMTString();
String expDate = null;
expDate = (new Date(d.getTime() + minutes * 60000)).toGMTString();
response.setHeader("Last-Modified", modDate);
response.setHeader("Expires", expDate);
res.setHeader("Cache-Control", "public"); // HTTP/1.1
res.setHeader("Pragma", "Pragma"); // HTTP/1.0
试过但用https访问时还是重新从服务器上下载图片,在状态栏可以看得出来。
另外我在Temporary Internet Files目录下看到所有的小图片的信息,每次访问过后只有Last Accessed和Last Checked的值改了,Internet Address列显示的链接跟状态栏上显示的下载链接一样。
下面的JSP的文件头:
<%@ page language="java" contentType="text/html;charset=utf-8" %>
<%@ page import="java.util.Date"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%
int nMinutes = 60 * 24 * 7;
Date d = new Date();
String modDate = d.toGMTString();
String expDate = null;
expDate = (new Date(d.getTime() + nMinutes * 60000)).toGMTString();
response.setHeader("Last-Modified", modDate);
response.setHeader("Expires", expDate);
response.setHeader("Cache-Control", "public"); // HTTP/1.1
response.setHeader("Pragma", "Pragma"); // HTTP/1.0
%>下面是jsp中图片的代码实例:
<td><img src="images/period/Li.gif" id="3" name="Li" title="Lithium" width="29" height="29" style="cursor:pointer" OnClick="onPeriodSelected(this)" OnDblClick="onPeriodDetail(this)"></td>
<td><img src="images/period/Be.gif" id="4" name="Be" title="Beryllium" width="29" height="29" style="cursor:pointer" OnClick="onPeriodSelected(this)" OnDblClick="onPeriodDetail(this)"></td>