解决https无法缓存的问题

火狐弃用http,转而大力推广https的动作一石激起千层浪,非常多没有安装安全证书的站点使用新版火狐浏览器已经打不开了。

之前我们站点仅仅有涉及须要加密的部分连接为https协议。眼下看来不得不将整个站点的连接均加装https。原本执行正常的功能就这样出现了问题。具体情况是,产品列表页面使用ajax载入产品的时候不能再像从前那样缓存之前载入好的数据了。造成这样的情况的原因主要有两点,第一点是在后台设置的过滤器强制每一个页面不缓存内容。第二个原因便是由于整个站点都进行了安全加密,使得浏览器本身不会再进行页面缓存。解决问题的方法是在须要缓存数据的页面设置强制缓存,例如以下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%
	String path = request.getContextPath();

	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("Pragma","public");
	response.setHeader("Cache-Control","public");
%>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link href="<%=path%>/resources/weixin/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<%=path%>/resources/weixin/js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="<%=path%>/resources/weixin/js/progressbar.js"></script>
<script type="text/javascript" src="<%=path%>/resources/weixin/js/common.js"></script>
<script type="text/javascript" src="<%=path%>/resources/weixin/js/account.js"></script>
<script type="text/javascript" src="<%=path%>/resources/js/common.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	$("#investpage").addClass("current");
	if(isWeiXin()){
		$("#page").val("1");
	}
 	addMoreProducts();
});
</script>
<title>普惠理財-产品列表</title>
</head>
<body>
	<header id="header">
		<h3>产品列表</h3>
	</header>
	<div id="container">
		<form id="centerForm" name="centerForm" method="post" action="">
			<input type="hidden" id="page" name="page" value="1" />
		</form>
		<div id="proList" class="pro_list">

		</div>
		<div id="addTag " class="addTag">
			<a href="javascript:void(0)" onclick="addMoreProducts()">
				<span id="loading" class="icon"></span><span id="promtText">载入中...</span>
			</a>
		</div>
	</div>
	<footer id="footer">
		<jsp:include page="../footer.jsp" />
	</footer>
</body>
</html>

尤其要注意Cache-Control的值和Pragma的值均为”public“。

时间: 2024-10-10 10:45:30

解决https无法缓存的问题的相关文章

基于md5的解决js,css缓存问题for django

一.常见的解决方案 js,css更新的时候,由于浏览器的缓存机制,可能导致引用老的js,css而引起错误.以往常见的解决方法有两种: 1.对js,css加版本控制,例如:jquery.min.js?v=xx.xxx.xx 此种方法存在的问题是需要对版本控制进行维护,比较麻烦 2.对js,css加时间戳 此种方法存在的问题是当js或css,更改后又被还原,但是时间戳已经更改,而导致浏览器需要重新下载js,css. 二.md5解决js,css缓存问题的原理 根据js,css的内容生成一个字符串,当j

利用gulp解决微信浏览器缓存问题

做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问题.关于gulp大家可以去gulp官网去详细了解. 这篇文章主要参考于Gulp解决发布线上文件(CSS和JS)缓存问题和Gulp.js----比Grunt更易用的前端构建工具两篇文章,在这里先谢过原作者. 本文主要记录安装gulp以及使用.解决缓存问题的过程,以便日后方便查阅. 1.安装NodeJS

让浏览器重新下载css文件,解决不刷新缓存的问题

网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息 它的作用有:1.作为版本号,让自己方便记忆.查找:2.作为修改标签,让浏览器重新下载新文件. 新浪.facebook上用到的: http://xxx.xxx.cn/css/common/index.css?version=20121226142105 http://tjs.sjs.xxx.cn//static/js/top.js?vers

深入理解http/https之缓存 2

1:web缓存的实现 web缓存: WEB缓存(cache)位于Web服务器和客户端之间. 缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求. HTTP协议定义了相关的消息头来使WEB缓存尽可能好的工作.如下图. 2:缓存的优点 减少延迟 减少网络带宽的消耗: 减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快.

在CentOS上安装Java环境&mdash;openjdk1.7 解决https配置问题

在CentOS上安装Java环境:[1]使用yum安装java 现阶段做企业级项目开发一般都采用Java语言.开发的项目需要放在服务器上运行测试,若以CentOS系统为服务器系统,首先要解决就是CentOS系统上的Java环境搭建. 如何使用yum方式在CentOS上安装Java环境,系统以CentOS6.5为例. 工具/原料 Java JDK yum库 CentOS6.5 方法/步骤 查看CentOS自带JDK是否已安装. ◆输入:yum list installed |grep java.

如何解决SPD的缓存问题

? SPD有时候文件被缓存住了,表现为文件的最后更改时间不对,或者本来文件已经被check in了,但是显示check out状态,而此时如果选择check in, 就会提示文件没有被check out. 解决方法: ? ? Clear cache: Close SPD2013. Delete everything at %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache. Delete everything at %APPDATA%\Micro

htmlunit 解决https证书不信任问题

代码如下  @Test     public void testHtmlUnit() throws Exception {         WebClient client = new WebClient(BrowserVersion.CHROME); //        client.getOptions().setUseInsecureSSL(true);         HtmlPage page = client.getPage("https://10.167.33.50/user&qu

解决https网站商品中百度分享无法使用的问题

百度分享不支持HTTPS这件事由来已久,但近期ecshop各最新模板咨询的比较多,我们就总结了解决方案. 第一步:下载百度分享必备文件 点此下载static.zip,将解压(解压密码:themebetter)后得到的static文件夹上传到网站根目录(注:域名/static). 最后一步:修改百度分享代码 删除百度分享代码中的以下网址 http://bdimg.share.baidu.com 至此,你就解决了百度分享不支持HTTPS的问题. 原文地址:https://www.cnblogs.co

解决手机端缓存办法

vue页面在index.html里面加入以下代码,可以清除缓存 <meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta