浏览器缓存

HTTP中get和post区别

可紊 提交于 2020-02-15 06:22:54
HTTP中比较经典的问题,我整理了下网上我读懂的比较好的资料,目前在知乎上看到了好的解释,毕竟是被别人理解过再经过自己表述出来的,相对书本也更容易让人理解些,如下: 1. 原文链接:https://www.zhihu.com/question/28586791/answer/145424285 通常的理解 w3schools关于这个问题的解答: HTTP 方法:GET 对比 POST 列出了一般的理解,比如: GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 GET书签可收藏,POST为书签不可收藏。 GET能被缓存,POST不能缓存 。 GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。 GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。 GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL

springboot 引入shiro缓存及rememberMe支持

房东的猫 提交于 2020-02-14 08:02:34
来源: https://www.jianshu.com/p/22bf52e09e4d 最终demo 到这节为止,我们已经实现了身份验证和权限验证。但是,如果我们登录之后多次访问 http://localhost:8080/userInfo/userDel 的话,会发现权限验证会每次都执行一次。这是有问题的,因为像用户的权限这些我们提供给shiro一次就够了。 下面,我们开始给shiro添加缓存支持: 1.添加依赖 <!-- shiro ehcache --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.2</version> </dependency> <!-- 包含支持UI模版(Velocity,FreeMarker,JasperReports), 邮件服务, 脚本服务(JRuby), 缓存Cache(EHCache), 任务计划Scheduling(uartz)。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> 2.注入缓存 在 com

Nginx 详细讲解

守給你的承諾、 提交于 2020-02-13 09:23:42
Nginx 详细讲解 一 第四部笔记 ---私人文章 一 Nginx的特点 在性能上占用的系统资源少;支持更多的并发连接(特别是静态小文件场景下)达到更高的访问效率; 在功能上Nginx不但是一个优秀的Web服务软件,还可以作为反向代理负载均衡及缓存服务使用; 在安装配置上Nginx更为方便,简单,灵活; 二 Nginx是什么? Nginx是一个开源的,支持高性能高并发的www服务和代理服务软件 Nginx因具有高并发(特别是静态资源)占用系统资源少等特性且功能丰富逐渐流行起来 Nginx不但是一个优秀Web服务软件,还具有反响代理负载均衡功能和缓存服务功能,与LVS负载均衡及Haoroxy等专业代理软件相比Nginx部署起来更为简单,方便;在缓存功能方便它又类似Squid等专业的缓存服务软件 三 Nginx的重要面试知识 3.1Nginx的重要特性 支持高并发:能支持几万并发连接(特别是静态小文件业务环境) 资源消耗少:在3万并发链接下,开启10个Nginx线程小号的内存不到200MB 可以做HTTP反向代理及加速缓存,即都在均衡功能,内置对RS节点服务器健康的检查功能,相当于专业的Haproxy软件或LVS的功能 具备Squid等专业缓存软件等的缓存功能 支持异步网络I/O事件模型epoll(linux2.6+) #跟据epoll实现的Web服务 3.2

Nginx配置参数说明

∥☆過路亽.° 提交于 2020-02-13 08:33:19
一、主配置段 1、正常运行必备的配置 #运行用户和组,组身份可以省略 user nginx nginx; #指定nginx守护进程的pid文件 pid path/to/nginx.pid; #指定所有worker进程所能打开的最大文件句柄数 worker_rlimit_nofile 100000; 2、性能优化相关的配置 #worker进程的个数,通常应该略少于CPU物理核心数,也可以使用auto自动获取 worker_processes auto; #CPU的亲缘性绑定(同样是无法避免CPU的上下文的切换的) #优点:提升缓存的命中率 #context switch:会产生CPU不必要的消耗 work_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; #计时器解析度(请求到达nginx,nginx相应用户请求后,要获取系统时间并记录日志,高并发的时候可能每秒钟获取很多很多次) #降低此值,可以减少gettimeofday()系统调用的次数 timer_resolution 100ms; #指明worker进程的nice值:数字越小,优先级越高 #nice值范围:-20,19 #对应的优先级:100,139 worker_priority number; 二

##JSP禁用缓存的方式

☆樱花仙子☆ 提交于 2020-02-13 07:40:18
JSP禁用缓存的方式 一,##使用服务器端控制AJAX页面缓存: response.setHeader( "Pragma", "no-cache" ); response.addHeader( "Cache-Control", "must-revalidate" ); response.addHeader( "Cache-Control", "no-cache" ); response.addHeader( "Cache-Control", "no-store" ); response.setDateHeader( "Expires", 0 ); 单纯的使用 xmlhttp.setRequestHeader("Cache-Control","no-cache")无效。 ##二,Cache-Control头域   Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。 请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate

计算机网络HTTP:HTTP缓存

こ雲淡風輕ζ 提交于 2020-02-13 01:45:42
缓存命中 -> 缓存再验证成功 -> 缓存再验证失败 = 缓存未命中 Cache_Control 可缓存性 解释 public HTTP请求返回的过程中,在cache_control中设置这个值,代表HTTP请求返回的内容所经过的任何路径当中(包括中间一些HTTP代理服务器以及发出请求的客户端浏览器),都可以对返回内容进行缓存操作 private 代表只有发起请求的浏览器才可以进行缓存 no_cache 可以在本地进行缓存,但每次发请求时,都有向服务器进行验证,如果服务器允许,才能使用本地缓存 no_store 本地和代理服务器都不可以存储缓存,每次都要重新请求,拿到内容 no_transform 主要用在proxy服务器,不允许进行格式转换 max_age 和 Expires 浏览器会先检查缓存是否过期,如果没有过期,就不向服务器发起请求,直接使用本地缓存,这叫做缓存命中。 max_age:最大缓存时间 Expires:有效期 这两个同时存在时,max_age优先生效 Etag 和 Last_Modified 如果没有max_age和Expires标签,或者验证失败,则浏览器向服务器发起请求,浏览器通过Etag或Last_Modified判断浏览器缓存的内容是否过期。 如果没过期返回304(服务端已经执行了请求,但是响应没有改变),这叫做缓存再验证成功,浏览器更新本地缓存的max

缓存有那么多种,分别是干什么的?

一笑奈何 提交于 2020-02-13 00:59:20
(转载自 https://www.ithome.com/0/433/406.htm ) 只要是位正儿八经的程序员应该都知道“缓存”是什么,甚至我司的很多做运营的小姐姐现在和程序员小哥哥交流中都时不时冒出“缓存”这个词,让人压力山大。 当然,这里讨论的是指软件层面的缓存。大家都知道的一点是,缓存可以让原本打开很慢的页面,变得能“秒开”。你平时访问的App与网站几乎都有涉及到缓存的运用。 那么,缓存除了能加速数据的访问之外,还有什么作用呢? 另外,任何事物都有两面性,我们如何才能将缓存的优点发挥得淋漓尽致,同时避免掉到它的弊端中呢? 本文接下来就给大家分享一下如何理解缓存,以及它的运用思路,希望对你有所启发。 缓存能做什么? 正如前面所说,大家最普遍的理解就是当我们遇到某个页面打开很慢的时候,会想到引入缓存,这样页面打开就快了。 其实快和慢都是相对的,从技术角度来说,缓存之所以快是因为缓存是基于内存去建立的,而内存的读写速度比硬盘快X倍,所以用内存来代替硬盘作为读写的介质自然能大大提高访问数据的速度。 这个过程大致是这样的, 通过在内存中存储被访问过的数据供后续访问时使用,以此来达到提速的效果。 其实除此之外,缓存还有另外2个重要的运用方式: 预读取和延迟写 。 预读取 预读取就是预先读取将要载入的数据,也可以称作“缓存预热”,它是 在系统中先将硬盘中的一部分数据加载到内存中

BOM函数之history对象

試著忘記壹切 提交于 2020-02-12 14:26:32
前面的话   history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后退和前进。本文将详细介绍BOM中的history对象 length   history.length属性保存着历史记录的URL数量。初始时,该值为1。如果当前窗口先后访问了三个网址,history.length属性等于3   由于IE10+浏览器在初始时返回2,存在兼容性问题,所以该值并不常用 history.length // 初始时,该值为1 history.length // 访问三个网址后,该值为3 跳转方法   history对象提供了一系列方法,允许在浏览历史之间移动,包括go()、back()和forward() 【go()】   使用go()方法可以在用户的历史记录中任意跳转。这个方法接收一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转(类似于后退按钮),正数表示向前跳转(类似于前进按钮) //后退一页 history.go(-1) //前进一页 history.go(1); //前进两页 history.go(2);   go()方法无参数时,相当于history.go(0),可以刷新当前页面 //刷新当前页面 history.go(); /

禁止IE缓存

寵の児 提交于 2020-02-12 04:56:26
假如有一个页面New.aspx,在客户端第一次访问后,它会在Internet临时文件夹里有一个New.aspx,文件生成.之后,如果修改了 New.aspx的数据后再次访问该页面,发现IE并没有对这个New.aspx的数据进行更新,反而打开的是第一次访问的页面! IE自动(默认)调用了Internet临时文件夹里有一个New.aspx文件,而不是重新下载新的New.aspx,怎样能让IE自动重新下载新的New.aspx呢,就像点了刷新按钮重新加载此页面一样? 解决的第一种方法: 客户端的设置方法:Internet选项→常规→Internet临时文件中"设置"→每次访问此页时检查。 这种设置时最好同时删除临时文件,这种方法是让客户自己设置自己的浏览器,如果客户忘记了设置,那么,新的页面总是下载不到本地.这时,客户会怎样认为呢?("肯定是程序的错!") 此外,别人访问您的页面,客户端的浏览器由他们来操作,一般,这种方法不宜解决此类问题。 解决的第二种方法: 让程序自己来让页面自动下载!这种方法实际上是让页面不保存到Internet临时文件夹中,每次访问页面都会让浏览器下载页面。 只要在New.aspx代码的Page_Load事件中加上 Context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 即可.

C# .net用法大全

牧云@^-^@ 提交于 2020-02-12 04:09:47
从事多年的开发,对于.net可以说有一定的总结,有关于教科书般的文档,献于交流. 本文整理了当前企业web开发中的管理系统,商城等系统的常用开发技术栈。 C#常见运算符 一元运算符(+、-、!、~、++、--) 算术运算符(*、/、%、+ 、 – ) 移位运算符(<< 、>> ) 关系和类型测试运算符(==、!=、<、>、<=、>=、is 和 as) 逻辑运算符(&、^ 和 | ) 条件逻辑运算符(&& 和 || ) 空合并运算符(??)条件运算符(它也称为三元运算符,?: ) 赋值运算符(=、+=、-=、!=、/=、&=、|=) C#常见语句块 Try(用于捕捉在块的执行期间发生的各种异常) Checked 语句和 Unchecked(用于控制整型算术运算和转换的溢出检查上下文) Lock(获取某个给定对象的互斥锁,执行一个语句,然后释放该锁) Using(获取一个或多个资源,执行一个语句,然后释放该资源) C#常见类修饰符 abstract抽象类 sealed密封类 static静态类 partial分部修饰 访问修饰符(public、protected、internal 和 private ) C#常用预处理指令 #region:指定一个可展开或折叠的代码块 #endregion:它标识着 #region 块的结束 #define: 它用于定义一系列成为符号的字符