浏览器缓存

BOSS项目基础知识点

匿名 (未验证) 提交于 2019-12-03 00:26:01
1.什么是git,和svn的区别 git是一个分布式的版本控制系统,一般用于代码的版本控制,类似于svn,区别在于git可以在建立本地仓库,这样代码可以提交到本地,这样可以断网提交,可以查找本地的代码提交历史记录。git有像github,码云这样的代码托管网站(我们项目就放在github上),下代码很方便。 2.什么是maven, maven中的依赖范围,依赖传递是什么意思 maven是一个软件项目管理工具,一般用它的配置文件pom来加载jar包,也可以用来编译工程发布工程 安装一个外包maven并整合到eclipse中,通过配置文件指定jar包的本地仓库,私服,和中央仓库,镜像等。 通过maven引入jar包,也通过maven将工程发布出去给其它工程引用。 依赖范围是用来控制打jar包的范围。 compile 编译、测试、运行 provided 编译、和测试有效 runtime:测试、运行有效。 test:只是测试有效,只在单元测试类中用。 依赖传递 就近原则 坐标 3.spring的原理,它是如何整合其它框架的 AOP(面向切面编程) 对指定的业务进行统一的增强,如事务处理,日志记录,性能统计,将这些代码从业务逻辑代码中抽取出来。 IOC(控制反转)DI(依赖注入) (1)项目引入的bean对象不用我们从bean工厂取,而是通过sring里的配置文件得到 (2

运营商劫持(DNS/HTTP302)

匿名 (未验证) 提交于 2019-12-03 00:22:01
本人以网络技术出身,近两年接触CDN网络,处理了一些CDN方面的网络问题,大多数以运营商丢包,延迟抖动为主,也处理一些硬件故障,比如机械硬盘的读写io测试,内存条兼容性测试,服务器IPMI规划等。这篇文章打算把自己对运营商对资源请求的劫持写下来,这个其实不是很罕见的事例,也不是网上找不到解决办法,也不是无法理解的尖钻技术,只是罗列一下自己的所知。 CDN网络访问拓扑 既然提到了CDN网络,那就顺带提一句吧。 废话不多说,先上图。   这回可以开始废话了吧?:大体的工作逻辑有用户的访问、localdns的解析、CDN资源调度、资源应答。 如果按照这种方式去运营CDN 架构 ,估计CDN行业早就倒闭了,先不说资源调度的好坏,如果有恶意的攻击流量,整个CDN系统就直接可以GG思密达了。 运营商劫持概述 劫持的目的 其实目的很简单,关于运营商劫持,一般运营商也不是无故做劫持,毕竟他们维护服务器,维护相应设备(比如分光器、分流器)也需要成本,运营商主要劫持出省流量,对于“小”运营商来说他们有省内流量考核,跨省访问会增加成本输出,集团控制出省流量,所以劫持往往发生在省间传输上。其次所有运营商都可能会做劫持,目的是减少省骨干网络链路的负载压力,尽可能的减少中继链路、远距离骨干链路,负载能力弱的链路上的流量,则会出现劫持的现象。 劫持的方法 运营商/或者小区宽带会有分光器设备

Django-cookie-session

若如初见. 提交于 2019-12-03 00:13:12
Django-cookie-session 为什么会出现Cookie, Session cookie和session都是为了弥补http协议的无状态特性,对server端来说无法知道两次http请求是否来自同一个用户,利用cookie和session就可以让用户只登录一次,server就知道某个请求是否需用重新登录。 什么是Cookie, Session ? 1.cookie:客户端第一次正常访问服务器,服务器在response headers中返回与用户信息相关的cookie,客户端收到后把cookie保存在本地,下次再发请求时会在request headers中带上这个cookie,服务器收到这个cookie就知道用户状态了。cookie可以设置过期时间,默认值是-1,表示关闭浏览器时cookie就会失效,值为0时表示立马失效,相当于删除cookie(cookie没有删除的方法),服务器和客户端都可以设置cookie,但不可以操作另一个域名下的cookie。 2.session: 客户端第一次正常访问服务器,服务器生成一个sessionid来标识用户并保存用户信息(服务器有一个专门的地方来保存所有用户的sessionId),在response headers中作为cookie的一个值返回,客户端收到后把cookie保存在本地,下次再发请求时会在request

vue后台管理系统遇到的注意事项以及总结

匿名 (未验证) 提交于 2019-12-03 00:11:01
vue循环嵌套,需要命名不同的变量名,来区分 地址栏加#号问题: Vue-router 中有hash模式和history模式,vue的路由默认是hash模式,一般开发的单页应用的URL都会带有#号的hash模式 第一步在router/index.js下增加mode:'hidtory',然后再config/index.js下修改assetsPublicPath: './'为assetsPublicPath: '/';如图: 更改ElementUI 内部样式: 通过scopd穿透的方式修改引入第三方组件库样式的方法; 在Vue文件中的style标签上有一个特殊的属性,scoped。当一个style标签拥有scoped属性时候,它的css样式只能用于当前的Vue组件,可以使组件的样式不相互污染。如果一个项目的所有style标签都加上了scoped属性,相当于实现了样式的模块化。 当打包构建的时候,javascript包变得非常大,影响加载: 解决方法即:用webpack提供的require进行代码分割 来实现按需加载~ 我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件; 1.require AMD规范写法 const userCenter = resolve => require(['@/pages/usercenter'], resolve);

Uncaught SyntaxError: Unexpected token <

匿名 (未验证) 提交于 2019-12-03 00:09:02
将前端项目打包到nginx上面后,总报错误:Uncaught SyntaxError: Unexpected token < 问题原因:是缓存机制导致的,浏览器是缓存了html文件的,所以当刷新的时候会导致它指向的是旧的js文件,所以就会报错。 解决方案:可以配置nginx去不允许浏览器缓存html文件,即是将cache-control设置成:no-cache,然后再重启Nginx就解决了。 HTTP协议的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、max-age。 no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器. no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源) private(默认): 只能在浏览器中缓存,

http报文头域详解

匿名 (未验证) 提交于 2019-12-03 00:09:02
不管是请求报文还是响应报文,都由起始行,报文头域, 空行, 报文主体构成 请求报文 的报文头域又分为 请求头域,通用头域,实体头域 响应报文 的报文头域又分为 响应头域,通用头域,实体头域 通用头域 通用头域包含请求和响应消息都支持的头域 ,对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。 通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。 下面简单介绍几个在UPnP消息中使用的通用头域。 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、 max-age。   各个消息中的指令含义如下:     Public 指示响应可被任何缓存区缓存。     Private 指示对于单个用户的整个或部分响应消息

第一篇:缓存有那么多,分别是干什么的?

匿名 (未验证) 提交于 2019-12-02 23:59:01
高性能章节:转自公众号:数据库开发: https://mp.weixin.qq.com/s?__biz=MzI3NDA4OTk1OQ==&mid=2649902899&idx=2&sn=fb77a500d013cbdd91e7f8391365a100&chksm=f31fbdbbc46834adeb2f57ff4c468bf95a38e2327babd9d188cb54ec98c68a9e1d3a898dee51&mpshare=1&scene=23&srcid=&sharer_sharetime=1567180359832&sharer_shareid=49e276b2e624f54fc5b024238a201770#rd 大家普遍的理解就是当我们遇到某个页面打开很慢的时候,会想到引入缓存, 这样页面打开就快了。 其实快和慢是相对的,从是技术角度来说,缓存之所以快是因为缓存是基于内存建立的,而内存的读写速度比硬盘快X倍,所以用内存来代替硬盘作为读写的介质自然能大大提高访问数据的速度. 这个过程大致是这样的,通过在内存中存储被访问过的数据供后续访问时使用,以此来达到提速的效果. 除此之外,缓存还有另外2个重要的运用方式:【预读取】和【延迟写】 【预读取】: 预读取就是预先读取将要载入的数据,也可以称作【缓存预热】。就是在系统对外提供服务之前, 先将硬盘中的一部分数据加载到内存中

客户端下载报错md5值不匹配

匿名 (未验证) 提交于 2019-12-02 23:57:01
分清情况: 情况1:个别客户端还是全部客户端更新失败? 情况2:网络环境,内网还是外网报错? 一般来说,常见外网客户端更新失败,内网正常。 ―――――――――――――――――――――――――――――― 情况1: 一、所有的客户端下载失败的错误堆栈: 下载到的文件lib/patch/sp-bd_org-client.jar 的MD5值和最新文件列表中的不符.download:a32209542ed1eb12fc7a898681fa1b75,target:8e279973c2cc73729e43d18089f23009 处理建议:请联系系统管理员或者技术支持人员。 1.对于705版本,通过管理控制台刷新组件版本, http://222.134.48.194:6888/easupdater/clear 来刷新更新服务。 2.如果上述方法不奏效或者是705之前的版本,则通过以下方式处理: http://222.134.48.194:6888/easupdater/clear 3.如果上述方法仍不奏效,并且管理员通过管理控制台配置了IP规则映射,则可能是此处配置错误引起的。 方法一:针对个别客户端有问题 1、删除eas\client目录下的eas_*.jnlp和resource.lst文件 2.对该客户端set-url.bat 进行全更新操作(去掉按需更新的勾,则为全更新模式) 方法二

浏览器缓存机制深入理解与实践(一)

匿名 (未验证) 提交于 2019-12-02 23:57:01
  我们在web开发中常常会遇到这样的场景,有一些较大和常用的资源(例如图片、文档、js、css),在页面打开初始化的时候并不需要用到,而是在用户与页面互动操作触发了某些条件时才需要这些资源(例如我们打开微博可能并不是为了看热搜,但大多数时候我们会点进热搜查看热搜新闻)。   那么问题来了,如果用户去点击查看热搜时,我们才去加载热搜所需要的相应的资源数据,就显得很被动了。因为在最常用的功能中,来耗费时间等待,这对用户来说其实并不是一个非常好的体验。所以,我们首先想到的是提前将这部分资源加载到浏览器缓存中,本文主要介绍了http两个不同的缓存机制。 一、http1.0――使用Expires,Last-Modified    强制缓存 :在http1.0时代,当客户端根据地址去获取图片、文档等缓存资源时,我们通过设置响应头中的Expires字段来给定一个时间点,并与放在响应体中的请求资源一同返回给客户端浏览器,并一起被保存于缓存中,下次我们再请求同一个路径地址拿资源时,浏览器强制请求从缓存中获取并返回200状态码。当浏览器的本地时间超过Expires字段设置的时间,缓存资源失效,再请求这个路径时需要去服务端重新获取资源。    协商缓存 :对于一些可能变化较大的资源,我们需要他们及时作出更新,但是又想继续使用缓存这种高效的方式,此时我们便不再使用Expires,而是使用Last

GET请求缓存问题及解决方案

匿名 (未验证) 提交于 2019-12-02 23:52:01
一、遇到的问题 最近在项目中遇到一个问题:由公司内网访问系统执行某一操作时,浏览器正确发送请求(服务端代码有打印日志),但使用公司外网执行形同操作,服务端未打印日志(请求并未到达服务端),浏览器却显示已发送请求,且返回了数据(但数据中的业务数据为空)。 初步判断应该是与外网有关,于是找到运维人员帮忙在服务器上抓包,结果发现外网的请求并未到达服务端,看来该问题应该是前端原因导致。 查看前端发起请求的代码,发现该请求是GET请求,查找资料后才知道:原来GET请求在有些浏览器中会缓存,再次请求时,浏览器不会发送请求,而是使用上次请求获取到的结果。 二、jQuery解决方案如下: $.ajax({ url: '/outer/cert/extension/getLatestCertOperInfo', type: 'get', dataType: 'json', async: false, cache: false, success: function (data) { } }); 将cache设置为false。它的工作原理是在GET请求参数中附加时间戳"_={timestamp}" 注: 也曾看到通过随机数形式解决Ajax中的缓存问题的方案,但是这种解决方案并不是特别可靠。因为随机数也有相同的情况。