浏览器缓存

JAVA学习要点总结

落花浮王杯 提交于 2020-03-05 09:38:26
文章目录 缓存 memcache的分布式原理 memcache的内存分配机制 如何存放数据到memcached缓存中?(memcache内存分配机制) memcache的惰性失效机制 memcache缓存的无底洞现象 一致性Hash算法的实现原理 Hash环 一致性Hash算法 Hash环的倾斜 虚拟节点解决Hash环倾斜 hash算法平衡性 memcached与redis的区别 Redis的主从复制 Redis的部分复制过程 Redis的主从复制阻塞模式 Redis的数据持久化方式 Redis的高可用部署方式 哨兵模式 Redis哨兵主要功能 Redis哨兵的高可用 哨兵如何判断redis主从节点是否正常? 集群模式 Redis可以在线扩容吗?zk呢 Redis高并发和快速的原因 浏览器本地缓存的了解和使用 缓存雪崩 缓存穿透 HashMap HashMap的Hash碰撞 HashMap的get和put原理 HashMap的rehash HashMap的线程不安全问题 HashMap和Hashtable的区别 为什么collection没有实现clonable接口 为什map没有实现collection接口 Map接口的实现有哪些,区别是什么 线程池 Executors框架的四种线程池及拒绝策略 四种线程池 JDK拒绝策略 Reactor模式 Reactor单线程模型

前端性能优化归纳总结

自作多情 提交于 2020-03-04 09:02:25
关于前端性能优化的总结,随处都可以看到这方面的文章,而优化方法,也无外乎那些“固定”方面,当然,有些方面已经过时,所以,在这里,我自己也总结一遍吧,加深理解,也希望是一种不同的总结形式。 -----------------------正文总这里开始------------------------------------ 一、什么是前端 性能 优化(what)? 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度。 二、为什么要做前端性能优化(why)? 在构建web站点的过程中,任何一个细节都有可能影响网站的访问速度,如果不了解性能优化知识,很多不利网站访问速度的因素会形成累加,从而严重影响网站的性能,导致网站访问速度变慢,用户体验低下,最终导致用户流失。 三、前端性能优化的原则(rule) 1、不要按照准则照本宣科的做,需要根据实际情况因地制宜; 2、不出bug! 四、从浏览器发起请求到页面能正常浏览都有哪些阶段(process)? 预处理——>DNS解析——>建立连接——>发起请求——>等待响应——>接受数据——>处理元素——>布局渲染 五、性能优化的具体方法(way) 一)内容层面 1、DNS解析优化(DNS缓存、减少DNS查找、keep-alive、适当的主机域名) 2、避免重定向(/还是需要的)

【Python之路】第二十三篇--Django【进阶篇】

血红的双手。 提交于 2020-03-03 20:17:04
文件配置 1.模版Templates文件配置: TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), ) 2.静态文件static配置: STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), ) 报错 doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS\ 这个问题出现没有在setting INSTALLED_APPS 添加项目名称引起 Q搜索示例 1.利用Q的特性,设计多条件搜索。 con = Q() q1 = Q() q1.connector = 'OR' q1.children.append(('id', 1)) q1.children.append(('id', 10)) q1.children.append(('id', 9)) q2 = Q() q2.connector = 'OR' q2.children.append(('c1', 1)) q2.children.append(('c1', 10)) q2.children.append(('c1', 9)) con.add(q1, 'AND') con.add(q2, 'AND') ret =

webpack构建离线应用 Service Workers

风格不统一 提交于 2020-03-03 12:00:38
1 简介 Service Workers是一个在浏览器后台运行的脚本,它的生命周期完 全独立于网页。它无法直接访问DOM,但可以通过postMessage接口发 送消息来和UI进程通信。拦截网络请求是Service Workers的重要功能, 通过Service Workers能完成离线缓存、编辑响应、过滤响应等功能。 2 兼容性 判断浏览器是否支持Service Workers的最简单方法是通过以下代 码: if (navigator.serviceWorker) { // 可以使用navigator.serviceWorker } 3 注册 要为网页接入Service Workers,就需要在网页加载后注册一个描述 Service Workers逻辑的脚本。代码如下: <script> if (navigator.serviceWorker) { window.addEventListener('load', () => { navigator.serviceWorker.register('../sw.js').then((registration) => { // Registration was successful console.log('ServiceWorker registration successful with scope: ', registration

SpirngBoot配置参考指南(全)

我是研究僧i 提交于 2020-03-03 09:49:28
#================================================= ================== #COMMON SPRING BOOT PROPERTIES #============================================== ===================== #---------------------------------------- #核心属性 #----- ----------------------------------- debug = false #启用调试日志。 trace = false #启用跟踪日志。 #LOGGING logging.config = #日志配置文件的位置。例如,Logback的`classpath:logback.xml`。 logging.exception-conversion-word =%wEx #记录异常时使用的转换字。 logging.file = #日志文件名(例如`myapp.log`)。名称可以是确切的位置或相对于当前目录。 logging.file.max-history = 0 #要保留的归档日志文件的最大数量。仅支持默认的登录设置。 logging.file.max-size = 10MB #最大日志文件大小。仅支持默认的登录设置。

解决ecshop清除缓存css样式没反应问题

折月煮酒 提交于 2020-03-03 09:36:31
部分浏览器例如谷歌或360等双核浏览器会对商城的css样式进行缓存,导致修改了css样式文件也没有更新。 ecshop模板 提供解决方法,修改后效果如下: 解决方法: 修改includes/init.php 找到 if (!empty($_CFG['stylename'])) { $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style_' . $_CFG['stylename'] . '.css'); } else { $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style.css'); } 修改为: if (!empty($_CFG['stylename'])) { $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style_' . $_CFG['stylename'] . '.css?'.time()); } else { $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style.css?'.time()); } 修改后,style

HTTP探索之初学乍练

戏子无情 提交于 2020-03-03 08:02:36
一、什么是HTTP? Hypertext Transfer Protocol(HTTP)协议(RFC7230) 一种无状态的、应用层、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。 二、HTTP请求行与响应行 请求行格式(ABNF方式描述) Request-line = method SP request-target SP HTTP-version CRLF HTTP常见方法(RFC7231) GET:主要的获取信息方法,大量的性能优化都针对该方法,幂等方法 HEAD:类似GET方法,但服务器不发送BODY,用以获取HEAD元数据,幂等方法 POST:常用于提交HTML FORM表单、新增资源等 PUT:更新资源,带条件时是幂等方法 DELETE:删除资源,幂等方法 CONNECT:建立tunnel隧道 OPTIONS:显示服务器对访问资源支持的方法,幂等方法 TRACE:回显服务器收到的请求,用于定位问题。有安全风险 Request-target origin-form:后端请求资源的路径,为空时传递/ absolute-form:用于正向代理 authority-form:用于CONNECT方法 asterisk-form:用于OPTIONS方法 HTTP-version 版本号发展历史 HTTP/0.9:只支持GET

dns原理介绍及实践问题总结

我的未来我决定 提交于 2020-03-03 07:11:35
1 问题引入: a) 域名劫持: dns过程中某个环节被攻击/篡改,导致dns结果为劫持者的服务器。例如竞争对手将你方的app下载地址篡改为他方的app下载地址。 b) 对现网用户进行监控时,发现个别用户请求时间为几十秒,而客户端设置的connectTimeout时间为二十秒。 原因:初步判断为dns解析时间耗时过长导致整个接口请求时间远远超过了10s。 解决办法: 自定义dns,设置超时时间。 (使用的的是OkHttp,支持自定义dns) c) 测试环境dns几十秒,现网正常 原因: 旧的代码里面对url解析为host有bug,当传入一个测试环境地址,例如 10.10.10.10:6026/path,最终解析出来的host为10.10.10.10:6026, 当调用系统的InetAddress.getAllByName("10.10.10.10:6026"),耗时非常长(几十秒) 分析: 首先10.10.10.10:6026不是一个host地址也不是一个ip地址,所以dns是无法解析的。 方法内部会把它当成一个host在到不同的dns服务器上去查找它的ip,最后返回失败。 解决办法: 使用InetAddress中提供的方法来获取host,拒绝自己实现一套 d) no route to host 2 dns过程介绍 2.1 什么是dns DNS (Domain Name

OkHttp3源码详解(一) Request类

和自甴很熟 提交于 2020-03-03 00:37:05
每一次网络请求都是一个Request,Request是对url,method,header,body的封装,也是对Http协议中请求行,请求头,实体内容的封装 1 public final class Request { 2 private final HttpUrl url; 3 private final String method; 4 private final Headers headers; 5 private final RequestBody body; 6 private final Object tag; 7 8 private volatile CacheControl cacheControl; // Lazily initialized. 1.HttpUrl HttpUrl主要用来规范普通的url连接,并且解析url的组成部分 现通过下面的例子来示例httpUrl的使用 https://www.google.com/search?q=maplejaw ①使用parse解析url字符串: HttpUrl url = HttpUrl.parse("https://www.google.com/search?q=maplejaw"); ②通过构造者模式来常见: 1 HttpUrl url = new HttpUrl.Builder() 2 .scheme(

http缓存详解

心已入冬 提交于 2020-03-03 00:34:52
单独拎出来的缓存问题,http的缓存 前后端的http交互中,使用缓存能很大程度上的提升效率,而且基本上对性能有要求的前端项目都是必用缓存的。 强缓存与弱缓存 缓存可以简单的划分成两种类型: 强缓存 ( 200 from cache )与 协商缓存 ( 304 )。 区别简述如下: 强缓存( 200 from cache )时,浏览器如果判断本地缓存未过期,就直接使用,无需发起http请求 协商缓存( 304 )时,浏览器会向服务端发起http请求,然后服务端告诉浏览器文件未改变,让浏览器使用本地缓存 对于协商缓存,使用 Ctrl + F5 强制刷新可以使得缓存无效。但是对于强缓存,在未过期时,必须更新资源路径才能发起新的请求(更改了路径相当于是另一个资源了,这也是前端工程化中常用到的技巧)。 缓存头部简述 上述提到了强缓存和协商缓存,那它们是怎么区分的呢?答案是通过不同的http头部控制。 先看下这几个头部: If - None - Match / E - tag 、 If - Modified - Since / Last - Modified 、 Cache - Control / Max - Age 、 Pragma / Expires 这些就是缓存中常用到的头部,这里不展开。仅列举下大致使用。 属于强缓存控制的: ( http1 . 1 ) Cache - Control