`

解决缓存问题

    博客分类:
  • Ajax
阅读更多

如果在返回的数据中加上一个计数器。用户没点一次按钮计数器加1,但往往这种效果在ff游览器中可以实现而在ie中却不能实现,原因是因为,用户每次请求的还是同一个地址传给服务器端的数据没有改变,游览器会把请求来的数据保存到缓存中,当用户再一次请求的游览器就会到缓存中读取所以计数器始终是1。

解决变法是:在请求地址后面加上一个虚拟的时间戳这样游览器每次请求的地址就不一样了。

package com.zchen.ajax.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AJAXServer extends HttpServlet {
	private static final long serialVersionUID = 3611240119854641367L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			response.setContentType("text/html");
			response.setCharacterEncoding("utf-8");
			PrintWriter out = response.getWriter();
			
			Integer inte = (Integer)request.getSession().getAttribute("total");
			int temp = 0;
			if(inte == null){
				temp = 1;
			}else{
				temp = inte.intValue()+1;
			}
			
			request.getSession().setAttribute("total",String.valueOf(temp));
			
			String old = request.getParameter("name");
			if (old == null || old.length() == 0) {
				out.println("用户名不能为空");
			} else {
				String name = new String(old.getBytes("ISO-8859-1"), "UTF-8");
				if (name.equals("chenzhen")) {
					out.println("用户名[" + name + "]已经存在。"+temp);
				} else {
					out.println("用户名[" + name + "]尚未存在。"+temp);
					out.println("<br/><a href=\'index.jsp\'>返回校验页面</a>");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
 
function verify(){

	var url = "/servlet/AJAXServer?name="+$('#username').val();
	url = convertURL(url);
	$.get(url,null,function(data){$("#result").html(data);});
		
}

//给url地址增加时间戳,骗过游览器,不读取缓存
function convertURL(url){
	//获取时间
	var timestamp = (new Date()).valueOf();
	//将时间戳信息拼凑到url上
	if(url.indexOf("?") >= 0){
		url = url +"&t=" + timestamp;
	}else{
		url = url +"&?=" + timestamp;
	}
	return url;
}

 

用时间戳去处理缓存的问题还很多类似的 如果验证码。当用户点击看不清换一张的我们也遇到缓存问题用时间戳解决。

分享到:
评论

相关推荐

    如何解决缓存问题及如何设置缓存

    因此,解决缓存问题和设置缓存是非常重要的。在这篇文章中,我们将讨论如何解决缓存问题和设置缓存。 缓存问题的类型 缓存问题可以分为两种:客户端缓存和服务器端缓存。客户端缓存是指浏览器在本地缓存Web页面的...

    AJAX学习总结(四)---解决缓存问题

    在本文中,我们将深入探讨AJAX(异步JavaScript和XML)技术的一个重要方面:如何解决缓存问题。AJAX使得网页能够不需刷新整个页面就能与服务器进行数据交互,极大地提升了用户体验。然而,缓存机制有时可能会导致...

    asp memcache 解决缓存问题

    使用 ASP Memcache 解决缓存问题有以下几个主要步骤: 1. **安装 Memcached**:首先,你需要在服务器上安装 Memcached。这通常可以通过下载源代码编译或者使用预编译的二进制包完成。安装完成后,启动 Memcached ...

    JFreeChart异步加载和解决缓存问题

    异步加载是解决图表渲染阻塞UI的一种有效方法。在Java中,可以使用SwingWorker或者CompletableFuture来实现异步处理。SwingWorker是专为Swing应用程序设计的,可以在后台线程执行耗时操作,然后将结果传播回事件调度...

    两次请求相同的一个URL,会产生缓存问题。

    **解决缓存问题的方法:** 1. **设置HTTP头**:通过设置`Cache-Control`、`Pragma`或`Expires`头来控制缓存的行为,例如指定缓存有效期、禁止缓存等。 2. **使用版本号**:在URL中添加版本号或时间戳,使每次请求看...

    如何清除tomcat缓存

    无论是手动删除缓存文件、配置`server.xml`文件还是控制浏览器缓存,都是解决缓存问题的有效手段。在实际工作中,根据具体情况选择合适的方法可以提高工作效率,避免因缓存问题导致的应用异常。

    Android WebView加载网页以及本地图片缓存问题

    本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本使用 1. 初始化WebView:首先,我们需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中找到该组件。...

    缓存一致性问题与解决方案

    锁在多线程环境下用于解决资源竞争问题,但并不能解决缓存一致性问题。因为锁只能确保在某一时刻只有一个线程访问数据,但无法保证所有线程都能看到最新的数据状态。 2. **消息中间件**: 单纯的消息中间件可以...

    2.2Redisson读写锁解决缓存一致性问题简单练习

    2.2Redisson读写锁解决缓存一致性问题

    解决缓存雪崩问题

    在java开发中如何解决缓存雪崩的问题,因为缓存失效导致数据未加载到缓存中,或者缓存同一时间大面积的失效 从而导致所有请求都去查询数据库,导致数据库CPU和内存负载过高,甚至宕机

    springboot缓存一致性解决

    本文将深入探讨Spring Boot中如何处理和解决缓存一致性问题。 首先,我们需要理解缓存的一致性模型。常见的有三种:强一致性、最终一致性和读已写一致性(Read-Your-Writes Consistency)。在分布式系统中,强一致...

    短小精悍的前端缓存插件解决前端缓存问题

    - 缓存问题:缓存可能导致用户获取旧数据,尤其是在实时性要求高的应用中。 2. **npm-storage 插件特性** - **简单易用**:npm-storage 提供了简洁的API,允许开发者轻松地存取数据,例如`storage.set('key', '...

    MysqL缓存的解决方案

    "MySQL缓存的解决方案" MySQL 缓存是提高数据库性能的一种重要手段,它可以减少数据库的读写次数,从而提高系统的整体性能。以下将对 MySQL 缓存的解决方案进行详细的介绍。 缓存的必要性 缓存的主要目的是减少...

    深踩Android Studio 缓存的坑及解决方法

    Android Studio 缓存问题 但是,回到 Android Studio 写代码,发现代码提示中新的 API 还是没有出来。这是因为 Android Studio 没有更新。解决方法是,点开右边的 Gradle 面板,找到 androidDependencies 任务,...

    详解vue之页面缓存问题(基于2.0)

    在本文中,我们将深入探讨如何解决Vue 2.0中的页面缓存问题。 首先,我们来看一个典型的应用场景:一个列表页面,每个列表项都链接到对应的详情页面。在Vue 1.x中,页面缓存通常不是大问题,但Vue 2.0的行为可能会...

    Hibernate缓存机制

    #### 四、解决缓存问题的方法 **4.1 解决N+1查询问题** - 可以通过以下几种方式来解决N+1查询问题: - 使用分页或批量加载技术,如`Query.setFetchSize(int size)`。 - 使用`setCacheMode(CacheMode.REFRESH)`来...

    流播放缓存问题

    流播放缓存问题是一个在现代数字媒体消费中...综上所述,流媒体缓存问题的解决需要综合考虑网络环境、设备性能、用户行为和数据安全等多个因素。通过对缓存机制的优化,我们可以提供更加流畅、便捷且安全的流媒体服务。

    http缓存知识梳理

    另外,可以借助开发者工具查看网络请求的缓存状态,帮助定位和解决缓存问题。 服务器需要合理配置响应头中的缓存相关字段,确保在提供最优性能的同时,也确保内容的时效性和一致性。而客户端方面,则需要合理管理...

    .ent 缓存问题解决

    为了更具体地解决`.ent`缓存问题,我们需要阅读《Cache(缓存).docx》文档,了解作者的具体实现和遇到的挑战。然后,我们可以根据文档内容给出更精确的建议和改进措施。如果你能分享文档内容,我可以提供更详细的指导...

    js、css、img等浏览器缓存问题的2种解决方案.docx

    浏览器缓存问题的2种解决方案 在 Web 开发中,浏览器缓存是非常重要的一部分,它可以提高网站的加载速度和执行效率,但同时也带来了许多问题,例如当服务端修改了 js、css 等文件时,客户端无法更新,这就需要我们...

Global site tag (gtag.js) - Google Analytics