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开发中的缓存问题的研究(三)
分享到:
相关推荐
#资源达人分享计划#
#资源达人分享计划#
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 研究生签名: 日期: 东南大学学位论文使用 授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人...
通过解决真实场景中的开发挑战,你将学会如何应对Web开发中的常见问题,并提升你的代码质量和开发效率。 无论你是初入Web开发领域的新手,还是有一定经验的开发者,这份Django资源教案都将为你提供宝贵的学习资源和...
本章介绍了如何使用Web技术开发一个直播应用,涉及的新技术有Webrtc、Websocket、React、 FFmpeg等。读者可以对其中感兴趣的技术点进行深入研究。目前,web端发起直播还不是主流选择。原因有两个是 Webrtc只能被部分...
项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...
它分析和研究了Web应用程序的前端和后端,并系统地提升了其性能和运行效率。《高性能PHP应用开发》还介绍了PHP编码最佳实践的运用以及如何使用工具来应用缓存技术。另外书中也涉及了对Web服务器的优化和数据库的优化...
它分析和研究了Web应用程序的前端和后端,并系统地提升了其性能和运行效率。《高性能PHP应用开发》还介绍了PHP编码最佳实践的运用以及如何使用工具来应用缓存技术。另外书中也涉及了对Web服务器的优化和数据库的优化...
它分析和研究了Web应用程序的前端和后端,并系统地提升了其性能和运行效率。《高性能PHP应用开发》还介绍了PHP编码最佳实践的运用以及如何使用工具来应用缓存技术。另外书中也涉及了对Web服务器的优化和数据库的优化...
从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存...
从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存...
本工程用于研究如何借助Ehcache缓存框架实现对页面的缓存 本工程编码方式:UTF-8 本工程开发工具:MyEclipse 说明: 1、ehcache.xml和ehcache.xsd两个文件可以在下在下载下来的名为“ehcache-core-x.x.x-...
《决战Nginx系统卷:高性能Web服务器详解与运维》 的最后一部分是关于Nginx使用缓存技术的方法,共列举了Nginx使用的五大缓存,特别是广泛使用的代理缓存、Memcached和Varnish,另外对于Memcached服务器的使用贯穿...
项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...
音乐播放、进度、缓存进度条监听,视频播放、上下滑动切换、加载相关同类型视频 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、...
本书基本涵盖了web开发中常见的问题,读者可以直接进入到关注的主题进行学习。内容涵盖使用pdo访问数据库,字符串,日期和时间,表单、表格和漂亮整洁的url,文件操作、电子邮件、图像、错误处理、防问控制、缓存、...
网站系统安全开发手册》是国内首本在网站系统安全开发规范方面的应用手册,由动易软件精心编制而成。结合了众多实例对各种攻击手段和防范措施设立了安全开发规范标准。...推荐做web开发的朋友们好好研究研究。