getLastModified()方法和浏览器缓存

web开发中的缓存问题的研究(一)  web开发中的缓存问题的研究(一) web开发中的缓存问题的研究(二) web开发中的缓存问题的研究(三) 一般情况下,浏览器都会缓存已经访问过的页面内容,关于如何禁止浏览器缓存的介绍,在网上到处都有相关的文章,但是,关于浏览器如何利用缓存,如何处理缓存的讲解,却鲜有人谈及.我一直为这个问题所困惑,这个问题也是绝大多数有经验的WEB开发人员所共同面临的问题,我有些朋友已做过几十个大大小小的W 阅读详情

在HttpServlet类中,service负责更具http请求的类型分发给各doXxx()方法处理,源码如下:

protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
  {
    String method = req.getMethod();//根据http请求method的不同作不同处理

    if (method.equals("GET")) {
       //获取嵌在http请求中的If-Modified-Since参数,这个字段是浏览器最后一次刷新缓存的时间,如果第一次请求就没有
       //比较If-Modified-Since参数和lastModified 的新旧,决定是否刷新浏览器缓存。如果lastModified 使用默认的-1L,总是刷新。
       //If-Modified-Since参数:服务器制定客户只想要那些自特定日期以来发生改变的页面 lastModified :服务器端返回的东西需要调整的时间点,比如代码  做了修改,或者别的。 
      long lastModified = getLastModified(req);
      if (lastModified == -1L)
      {
        doGet(req, resp);
      } else {
        long ifModifiedSince = req.getDateHeader("If-Modified-Since");
        if (ifModifiedSince < lastModified / 1000L * 1000L)
        {
          maybeSetLastModified(resp, lastModified);//重新设置浏览器的参数
          doGet(req, resp);
        } else {
          resp.setStatus(304);
        }
      }
    }
    else if (method.equals("HEAD")) {
      long lastModified = getLastModified(req);
      maybeSetLastModified(resp, lastModified);
      doHead(req, resp);
    }
    else if (method.equals("POST")) {
      doPost(req, resp);
    }
    else if (method.equals("PUT")) {
      doPut(req, resp);
    }
    else if (method.equals("DELETE")) {
      doDelete(req, resp);
    }
    else if (method.equals("OPTIONS")) {
      doOptions(req, resp);
    }
    else if (method.equals("TRACE")) {
      doTrace(req, resp);
    }
    else
    {
      String errMsg = lStrings.getString("http.method_not_implemented");
      Object[] errArgs = new Object[1];
      errArgs[0] = method;
      errMsg = MessageFormat.format(errMsg, errArgs);

      resp.sendError(501, errMsg);
    }
  }



2023年金蝶云星辰初级顾问认证参考试题(1) 最新积累的考试真题,答案只供参考(49分T~T),欢迎大佬们更正,私聊我修改,有新的试题也可以私聊我,日后会完善题库!大家一起努力,预祝大家顺利通过!1.【简单】生产环节中,客户老板希望掌握材料的超发或漏发情况,,以便分析用料情况,对材料浪费进行管控,可以查看什么报表?⒉[中等】客户主营电气柜的生产销售,商品为非标品需定制,又因交期效短,需要边生产边补料,以下哪个功能最适合该客户场景?15.【简单】在给商品设置科目关联时,分别按照单个商品,商品类别,所有商品设置了对应客户,()优先级最高。 阅读详情

相关推荐

ESP8266 + MQTT :如何实现 LED 灯的远程控制

MQTT 是轻量级的、灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡。 NodeMCU 是一个开源的物联网平台。它使用 Lua 语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。 在此项目中我们将实现 NodeMCU(ESP8266) 与 EMQ X Cloud 运营和维护的免费公共 MQTT 服务器远程控制 LED 灯,并使用 Arduino IDE 来对 NodeMCU ESP8266 进行编程。 EMQ X Cloud

emqx_broker的博客 3356

关于浏览器的缓存和getLastModified()的使用问题

由于市面上的浏览器都会对已访问过的页面进行缓存,因此作为web开发人员都应该对浏览器的缓存有所了解。 在http协议中,浏览器对访问过的页面缓存后,它将会在以后访问该页面时,将会根据LastModified头字段指定的时间值生成If- Modified-Since头字段,作为缓存页面的最新更新时间。如果网页的最后修改时间比If-Modified-Since头字段指定的时间早的 话,web服务

a1259109679的专栏 1132

《计算机网络》课程大作业- 《小区局域网的设计和规划》

8.1首先,在满足用户需求方面,通过详细的需求分析,充分考虑了居民和物业管理的不同业务需求。对于居民,无论是日常的高清视频播放、在线游戏、远程办公还是智能家居设备的连接,网络都能提供稳定的高速带宽支持。从有线网络的千兆以太网技术保障稳定的有线连接,到无线网络采用 Wi - Fi 6 技术确保无线覆盖区域的高速和低延迟,满足了居民多样化的娱乐和生活需求。对于物业管理,安防监控系统的实时数据传输、物业办公自动化系统的流畅运行以及社区信息的及时发布等业务,都有针对性的网络设计。

lisangsimida的博客 2598

servlet 中getLastModified()

 在http协议中,浏览器对访问过的页面缓存后,它将会在以后访问该页面时,将会根据LastModified头字段指定的时间值生成If-Modified-Since头字段,作为缓存页面的最新更新时间。如果网页的最后修改时间比If-Modified-Since头字段指定的时间早的话,web服务器就会请求的页面,如果自If-modified-Since指定的时间以来,网页内容没有被修改的话,服务器就

天将降大任于斯人也 8882

时空数据建模的跨节点联邦图神经网络:KDD21 Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling

前言 联邦学习(FL)虽然已经被广泛研究,但是对复杂的时空依赖关系进行建模以提高预测能力仍然是一个开放的问题。此外目前最优的时空预测模型假定对数据的访问不受限制,忽略了对数据共享的限制。基于此,本文提了一个基于图联邦学习的时空数据模型 Cross-Node Federated Graph Neural Network (CNFGNN),该模型在跨节点联邦学习的约束下,使用基于图神经网络(GNN)的架构对底层图结构进行编码,属于结构化联邦的一种,每个本地模型利用私有数据进行学习,并保持分散性。CNFGNN

qq_56027260的博客 1810

Unity卡牌游戏UI框架:数据驱动与模块化设计实践

在Unity游戏开发中,UI系统是连接玩家与游戏逻辑的关键桥梁,其核心在于实现数据与表现的高效同步。数据驱动设计通过分离数据模型、逻辑状态与视图表现,利用观察者模式自动响应状态变化,确保了代码的清晰与可维护性。这种架构显著提升了开发效率,尤其在需要复杂状态管理和实时反馈的交互场景中,如卡牌游戏的拖拽、布局与动画系统。基于模块化思想,开发者可以将卡牌视图、布局管理、区域控制等组件像积木一样组合,快速构建出动态的手牌弧形布局、战场区域管理等特色功能。通过集成对象池、图集优化等性能方案,还能有效管理绘制调用与网格

weixin_34262482的博客 451

浏览器缓存内幕与getLastModified方法

在HttpServlet类中定义了一个getLastModified方法,其完整语法定义如下:      protected long getLastModified(HttpServletRequest req)  其中的返回值表示自1970年1月1日的0点0分0秒开始计算的一个毫秒数,HttpServlet类中定义的getLastModified方法总是返回一个负数,在HttpServlet子

Andrew Wang的专栏 4388

FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译

FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 什么是Firmament? Firmament (FMT) 是一款基于模型设计 (Model-Based-Design, MBD) 的开源自驾仪,可被用来快速构建无人机,无人车,无人船,机器人等平台的控制系统。 系统主要由两部分构成. FMT-Firmware: 一个基于C/C++开发的稳定、高性能的嵌入式系统. FMT-Model: 一个基于MATLAB/Simulink开发的仿真框架以及算法库. 昨天得知FMT开源飞控项目已经开

weixin_45786595的博客 2869

HttpServlet---getLastModified与缓存

今天看HttpServlet源码看到一个函数getLastModified,上网查阅与浏览器缓存有关系,根据源码,画了个流程图理解下: 源码: protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { S

奔跑的蜗牛 3253

免安装版Notepad++终极配置:右键菜单+图标美化+多文件批量处理(2024新版)

本文详细介绍了如何为免安装版Notepad++进行终极配置,包括右键菜单添加、图标美化以及多文件批量处理功能。通过注册表编辑和高级定制,用户可以在便携版中实现与安装版相同的功能体验,同时保持系统整洁。特别适合开发者、系统管理员和效率追求者使用。

nut55的博客 830

【ESP32使用MAX98357播放音频】

在物联网和智能家居领域,音频播放功能越来越受到重视。ESP32作为一款功能强大的微控制器,结合MAX98357音频放大器模块,可以实现高品质的音频播放。本文将详细介绍如何使用ESP32的I2S接口通过MAX98357进行音频播放。

vor234的博客 7524

Servlet与缓存-学习笔记

对于浏览器的刷新而言,当浏览器缓存中有资源,也会×××端要资源,只有在回车访问情况下,才找缓存 2)可以通过重写getLastModified()方法来阻止每次刷新都访问服务端,以减轻服务端的压力 3) 如果要实现一种高级功能,即客户端请求动态web资源时,动态web资源发现发给客户端的数据更新了,就给客户端发送最新的数据,如果发现数据没有更新,则动态web资源就要客户端就去访问它自己缓存的数据...

weixin_33928137的博客 147

电路板保险丝如何选型

在电路板保险丝选型过程中,需要考虑多个因素以确保其适合特定的电路需求。最后,经过以上程序选定的样品需要在实际的电路中进行测试,以验证所选择的保险丝是否合适。

weixin_57010826的博客 1310

关于浏览器的缓存和getLastModified()的使用问题。

由于市面上的浏览器都会对已访问过的页面进行缓存,因此作为web开发人员都应该对浏览器的缓存有所了解。在http协议中,浏览器对访问过的页面缓存后,它将会在以后访问该页面时,将会根据LastModified头字段指定的时间值生成If-Modified-Since头字段,作为缓存页面的最新更新时间。如果网页的最后修改时间比If-Modified-Since头字段指定的时间早的话,web服务器就会请

hnsc的专栏 1603

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Servlet规范之getLastModified()

场景分析 为什么会有Last-Modified? 当然是为了节省传输数据量,提高响应速度了。 假如有一个页面,又臭又长。。。。每次请求都要等半天,等就等吧,关键是每次等来的内容都一样。这就忍不了了。所以就加入了最后修改时间来解决这个问题。如果页面发生了修改则重新请求,如果没有发生修改,那么直接用缓存。 源码解析 以下是HttpServlet的部分源码,怎么是不是看着有点不像。。。。 只是经过我稍微删减了一下,然后翻译了翻译,嗯,翻译翻译什么叫惊喜。。。。 public abstract class Ht

78KgMiao的博客 847

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

web开发中设置页面禁止缓存

java代码: // 禁止缓存 response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragrma", "no-cache"); response.setDateHeader("Expires", 0); jsp代码:

◇″淡定。 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

servlet getLastModified

是什么: 是HttpServlet当中一个方法,被servlet引擎所调用,在httpServlet当中默认返回-1。 protected long getLastModified(HttpServletRequest req) {   return -1L; } 有什么用处: 控制client的GET请求(如post请求不受影响)是否被真实响

px348402717的专栏 987

4.ServletContext的getLastModified方法阻止页面刷新每次都访问服务器

ServletContext的getLastModified方法阻止页面刷新每次都访问服务器

piyingcheng的博客 417

让servlet支持浏览器缓存

为了提高性能IE等浏览器会自动缓存一些资源,以减少网络传输提高性能,对一些如JS、CSS、图片等,默认都支持缓存,但是 对于自定义Servlet,默认情况下缓存不被支持,但是通过简单修改,也可以让自定义Servlet同其他资源一样支持缓存。 通过对浏览器缓存原理的阐述,说明如何实现自定义的Servlet的浏览器缓存支持。

1397

servlet中得getLastModified方法

1) user logout之后,按回退按钮又可进行提交; IE缓存的问题 。  登出系统之后,输入刚才的URL,依然能访问原来的页面(但是有任何操作就会返回到登陆的页面),这是IE缓存的问题,只要清除调IE的缓存就好。   清除IE缓存的方法有两种,一是在浏览器端控制,二是在服务器端返回Response的时候设置Response的Header信息(禁止Servlet的缓存)。   浏

johnsontian_1的博客 344

HttpServlet中提供了实现浏览器和服务器缓存的模版方法service

HttpServlet的service方法中提供了实现缓存的模版 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) { long

阿南的博客 244
上一篇: j2ee编码问题
下一篇: eclipse常用快捷键
javaUTU
博客等级 码龄16年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值