web开发中的缓存问题的研究(一)
web开发中的缓存问题的研究(二)
web开发中的缓存问题的研究(三)

一般情况下,浏览器都会缓存已经访问过的页面内容,关于如何禁止浏览器缓存的介绍,在网上到处都有相关的文章,但是,关于浏览器如何利用缓存,如何处理缓存的讲解,却鲜有人谈及.我一直为这个问题所困惑,这个问题也是绝大多数有经验的WEB开发人员所共同面临的问题,我有些朋友已做过几十个大大小小的WEB项目,当与他们交流这些问题时,他们虽然也在项目中遇到和解决过这些问题,但由于没有足够的时间和精力来仔细思考这些问题的原因和细节,他们对这些问题始终也是一知半解、含糊不清,而目前又很少关于这些问题的专门和详细讲解,我最近用了两天的时间,把浏览器缓存的问题透彻地研究了一翻,主要包括一下方面的细节.

1.如何禁止浏览器缓存,这是最简单的问题,本来羞于在此讲解,但是为了完整性,不妨将其列为一个知识点.

2.浏览器在访问已缓存过的资源时,它在什么情况下会向服务器发送请求?在什么情况下根本就不向服务器发送请求.这与浏览器的缓存设置有关!但是,由于几乎所有人的浏览器都是采用的默认设置,所以,重点应该放在分析浏览器的默认缓存设置的研究上.

3.当通过其他网页文档中的超链接来访问某一个已经缓存过的资源时,浏览器是否要向服务器发出访问请求?如果不发,则会出现一个问题:当销售一件商品后再回到商品库存的显示页面时,看到的还将是先前看到的内容,而不是更新的库存数据。但是,在访问一个普通的HTML文件时,如果浏览器每次都向服务器发送访问请求,效率就会相对低下,这就失去了缓存的意义和价值.所以,结论应是浏览器访问动态页面时不能使用缓存,而访问静态页面时应该使用缓存,但是,仅仅根据被访问页面的资源名称,浏览器是无法知道商品库存的显示页面是属于动态内容,还是属于静态内容。浏览器是根据什么方式来判断它缓存的资源是动态的,还是静态的呢?在什么请求下,它会对缓存的资源总是发出新的请求呢?

4.对于缓存的内容,即使浏览器向服务器发送了请求,但服务器在接收到请求后,可能不会返回内容,而是让浏览器继续使用缓存的内容,这在实际应用中有什么好处呢?如何处理其具体细节呢?

5.服务器端也有缓存,当服务器接收到浏览器的请求后,假设它返回响应内容,但返回的响应内容可能不是最新的内容,而很可能是一个旧的缓存版本,这又是怎么回事呢?

所有这些问题,在笔者的《深入体验java web开发内幕》一书中都有深刻的分析和详细的实验步骤.

以下是该书的节选(不包括服务器端缓存技术的讲解,服务器端缓存技术在其他章节有案例分析)

4.5.8 浏览器缓存内幕与getLastModified方法
  在HttpServlet类中定义了一个getLastModified方法,其完整语法定义如下:
      protected long getLastModified(HttpServletRequest req)
  其中的返回值表示自1970年1月1日的0点0分0秒开始计算的一个毫秒数,HttpServlet类中定义的getLastModified方法总是返回一个负数,在HttpServlet子类中可以对这个方法进行覆盖,以便返回一个代表当前输出的响应内容的修改时间,HttpServlet类的service方法可以根据这个返回值在响应消息中自动生成Last-Modified头字段。
  一般情况下,浏览器都会缓存已经访问过的页面内容,getLastModified方法的返回值可以影响浏览器如何处理和利用缓存内容。在详细了解getLastModified方法的应用之前,应该先对浏览器的缓存机制有所了解。单击IE浏览器的“工具”“Internet选项”菜单,打开“Internet选项”对话框,接着再单击“常规”选项卡中的“Internet临时文件”栏中的“设置”按钮,打开如图4.16所示的“设置”对话框。

图4.16

在图4.16所示的“设置”对话框的“Internet临时文件夹”栏中,可以看到浏览器保存所有缓存页面内容的文件夹的完整目录名称,对于Administrator用户来说,其默认的设置为“C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files”。单击“Internet临时文件夹”栏中的“查看文件”按钮,可以打开这个文件夹,如图4.17所示。.

图4.17

web开发中的缓存问题的研究(一)
web开发中的缓存问题的研究(二)
web开发中的缓存问题的研究(三)

转载于:https://www.cnblogs.com/spring3/archive/2006/05/14/2401809.html

web开发中的缓存问题的研究(一)相关推荐

  1. 幻灯片:Web开发中的缓存

    这是我昨天在博文视点Open Party上海站上关于Web开发中缓存的简单讲座.原本博文视点的朋友们希望我讲一下ASP.NET MVC方面的话题(估计看我最近一直在搞这个),但是我觉得其他平台一直用的 ...

  2. eclipse下web开发中缓存问题

    eclipse下web开发中缓存问题 原创 2016年04月06日 17:27:14 标签: eclipse / 缓存 / web开发 2351 问题描述:对web文件无论怎么修改,甚至删除,最后都会 ...

  3. python web开发第三方库_Python Web开发中常用的第三方库

    Python Web开发中常用的第三方库 TL;DR 经常有朋友问,如果用Python来做Web开发,该选用什么框架?用 Pyramid 开发Web该选用怎样的组合等问题?在这里我将介绍一些Pytho ...

  4. Web 开发中应用 HTML5 技术的10个实例教程

    HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...

  5. java和Mysql数据一致性_java web开发中数据一致性的问题

    在java web开发中,数据存储介质有如下几种数据库(rdms,nosql) 缓存系统(redis,memcached,ehcache) java内部数据结构(map,list) 文件存储(fast ...

  6. 【笔记-node】《imooc-nodejs入门到企业web开发中的应用》

    目录 课程名 备注 入门必学 nodejs入门到企业web开发中的应用 框架与工具 node.js+koa2+mysql打造前后端分离精品项目<旧岛> 项目实战 20190317-2020 ...

  7. Web开发中的常见应用

    一.文件下载 文件下载功能是web开发中经常使用到的功能,使用HttpServletResponse对象就可以实现文件的下载. 文件下载功能的实现思路: 获取要下载的文件的绝对路径 获取要下载的文件名 ...

  8. ASP.NET AJAX 在Web开发中的应用

    摘 要 ASP.NET AJAX 实现了Web页面丰富的部分刷新效果.本文通过介绍AJAX原理,引申到ASP.NET AJAX原理,并总结了在Web 开发应用中要注意的若干问题.合理地利用ASP.NE ...

  9. Web开发中的图片管理:策略与实践

    前言 在Web开发中,图像是无法忽视的重要组成部分.然而,随着图片数量的增加和高清图像的普及,图片管理变得越来越复杂.在这篇文章中,我们将详细探讨Web开发中的图片管理策略和实践,包括图片优化.存储. ...

最新文章

  1. google地图经纬度偏移修正算法完美解决方案
  2. 自定义msi安装包的执行过程
  3. HT For Web 拓扑图背景设置
  4. 使用ADF绑定创建视图对象行CreateInsert操作
  5. python-运算符-比较运算符
  6. jquery实现同时展示多个tab标签+左右箭头实现来回滚动
  7. 宝塔搭建PHP自适应懒人网址导航源码实测
  8. RabbitMQ03高级篇(消息可靠性投递,Consumer ACK,消费端限流,TTL, 通过代码创建队列和交换机以及绑定)
  9. python生成三对角矩阵_块三对角矩阵python
  10. linux将时间戳转换,linux时间戳转换
  11. 将Kali Linux中的Firefox浏览器语言设置为中文
  12. 《英语语法新思维 基础版2》读书笔记(一)
  13. NFC Forum发布NFC数据交换格式(NDEF)规范
  14. 2018太原理工计算机二级,太原理工大学2018年度全面绩效考核结果和发放考核绩效的通知...
  15. 杨辉三角与倒置杨辉三角
  16. 第二十三章:面向对象(3)
  17. docker进入容器的方法
  18. 视频剪辑PR各种版本
  19. 医院WLAN无线认证解决方案
  20. 论文研究记录----数据整理

热门文章

  1. python资源百度网盘-bypy-百度网盘Python客户端 linux
  2. 函数式编程语言python-Python——五分钟理解函数式编程与闭包
  3. 学好python可以做什么兼职-自学Python能干些什么副业
  4. python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
  5. python装饰器-python装饰器
  6. python简单编程例子-Python入门 —— 用pycharm写一个简单的小程序3
  7. python3下载慢-PIP 下载慢,给你Python3的pip换个源 一键换源
  8. python学习费用-学习老男孩python多少钱?收费贵不贵?
  9. python爬虫工程师-Python-爬虫工程师-面试总结
  10. python下载的文件放在哪里的-python实现文件下载的方法总结