缓存服务器

php防止重复提交问题总结

佐手、 提交于 2020-03-05 08:06:29
用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。 1.使用客户端脚本 提到客户端脚本,经常使用的是JavaScript进行常规输入验证。在下面的例子中,我们使用它处理表单的重复提交问题,请看下面的代码: <form method="post" name="register" action="test.php" enctype="multipart/form-data"> <input name="text" type="text" id="text" /> <input name="cont" value="提交" type="button" onClick="document.register.cont.value='正在提交,请等待...'; document.register.cont.disabled=true;document.the_form.submit();"> </form> 当用户单击“提交”按钮后,该按钮将变为灰色不可用状态。 上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。 还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit(

Spring Boot的缓存之旅(二)

橙三吉。 提交于 2020-03-05 03:42:43
使用Redis 1.引入spring-boot-starter-data-redis依赖 2.进行项目文件配置 使用前先启动redis #redis配置 #redis服务器地址 spring.redis.host=localhost #redis服务器端口 spring.redis.port=6379 #数据库配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=123456abc ##validate 加载hibernate时,验证创建数据库表结构 ##create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 ##create-drop 加载hibernate时创建,退出是删除表结构 ##update 加载hibernate自动更新数据库结构 ##none

可能感兴趣的计算机网络协议 -- CDN

本秂侑毒 提交于 2020-03-05 00:17:38
作者:opLW 漫长寒假,结束了毕业论文的初稿。最近闲来无事学了点Flutter,感觉多个内容同时学可能会比较有趣,然后就重新捡起了网络协议看起了《趣谈网络协议》和《计算机网络》,进一步完善了对计算机网络整体结构的认知,然后顺便记录下自己感兴趣的熟悉又陌生的协议。 参考文章: CDN是什么?使用CDN有什么优势? 目录 1. CDN简介 2. CDN获取资源的过程 3. CDN对不同类型资源的缓存策略 4. CDN的使用场景 1. CDN简介 CDN(Content Delivery Network,即”内容分发网络“)是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率,解决因分布、带宽、服务器性能带来的访问延迟问题。如下图所示用户不直接从源站获取资源,而是从距离用户最优的边缘节点获取资源,以此来提高效率。 概念介绍 源站 使用CDN之前,用户真正想要访问的服务器。 边缘节点 边缘节点也称CDN节点、Cache节点等;是相对于网络的复杂结构而提出的一个概念,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度。其作用是根据不同的资源类型进行优化缓存,以此来提高网站访问的速度和质量。 2. CDN获取资源的过程 2.1 概要 使用CDN之前,我们通过源站的IP地址,从源站获取资源;使用CDN之后

Varnish的vcl子程序

我是研究僧i 提交于 2020-03-04 18:38:08
Varnish的VCL子程序 以下内容参考: http://book.varnish-software.com/4.0/ VCL子进程,在其中定制Varnish的行为。VCL子例程可用于:添加自定义标头,更改Varnish错误消息的外观,在Varnish中添加HTTP重定向功能,清除内容以及定义缓存对象的哪些部分是唯一的。 注意:强烈建议尽可能让默认的内置子程序。内置子程序的设计考虑到安全性,这通常意味着它们可以合理的方式处理VCL代码中的任何缺陷。 vcl_recv 规范化客户端输入 选择一个后端Web服务器 重新编写Web应用程序的客户端数据 根据客户端输入决定缓存策略 访问控制列表(ACL) 安全屏障,例如针对SQL注入攻击 修复错误,例如index.htlm- >index.html vcl_recv是Varnish第一个VCL子进程,将客户端请求解析为其基本数据结构之后执行。 vcl_recv有四个主要用途: 修改客户端数据以减少缓存的多样性。 决定使用哪个Web服务器。 根据客户端数据决定缓存策略。 执行特定Web应用程序所需的重写规则。 在vcl_recv你可以执行以下终止操作: pass:它通过缓存查找,但它执行Varnish请求流的其余部分。 pass不会将来自后端的响应存储在缓存中。 pipe:此操作创建一个全双工管道,将客户端请求转发到后端,且不查看其内容

Varnish概念篇

喜你入骨 提交于 2020-03-04 16:52:24
1,Varnish简介: Varnish是一款高性能且开源的反向代理服务器和web加速器,与传统的squid相比,varnish具有性能更高,速度更快,管理更加方便等诸多优点,很多大型的网站都开始尝试使用varnish来替换squid,以在相同的服务器成本下提供更好的缓存效果,varnish更是作为CDN缓存服务器的可选服务之一。 挪威的最大的在线报纸Verdens Gang(vg.no) 使用3台Varnish代替了原来的12台squid,性能比以前更好,这是varnish最成功的应用案例。 2,Varnish的特点: 1)是基于内存缓存,重启后数据将消失。 2)利用虚拟内存,io性能好。 3)支持设置0~60秒内的精确缓存时间。 4)VCL配置管理比较灵活。 5)32位机器上缓存文件大小为最大2G。 6)具有强大的管理功能,如果top,stat,admin,list等。 7)状态机设计巧妙,结构清晰。 8)利用二叉堆管理缓存文件,达到积极删除目的 3,Varnish与Squid对比 说到Varnish,不能不提Squid,Squid是一个高性能的代理缓存服务器,它和varnish之间有诸多的异同点,这里分析如下: 下面是他们之间的相同点: (1)都是一个反向代理服务器; (2)都是开源软件; 下面是它们的不同点,也是varnish的优点: (1)Varnish的稳定性高

前端性能优化归纳总结

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

性能优化

让人想犯罪 __ 提交于 2020-03-04 08:54:04
1. 使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少) 在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。 2. 尽量优化数据库语句,使逻辑尽量简单。 @ 还有就是在使用函数时 charindex >like > padindex 效率依次递减。 @查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。 还有好多,可以总结的,这里就不再描述了。 3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。 使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是有代价的。尽量减少使用对象, 如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate: (1)页面控件 (.ascx) (2)页面不回传给自身。 (3)无需对控件的事件处理。 (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理) 单个页面或每个页面都禁用 ViewState,如下所示: 单个页面:<%@ Page EnableViewState="False" %> 每个页面:在 web.config 中 <Pages EnableViewState="false" />

性能优化

岁酱吖の 提交于 2020-03-04 08:53:32
最近对原来的项目优化,总结如下:   1. 使用存储过程(如果在程序里用exec 存储过程参数,这样执行似乎并没有快多少)。     在 数据库 里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。   2. 尽量优化数据库语句,使逻辑尽量简单   a) 还有就是在使用函数时,charindex >like > padindex 效率依次递减。     b) 查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。     还有好多,可以总结的,这里就不再描述了。   3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。   使用ViewState,每个对象都必须先序列化到ViewState中,然后再通过回传进行反序列化,因此使用ViewState是有代价的。尽量减少使用对象,如果可能,尽量减少放入ViewState中的对象的数目。下面情况基本上可以禁用ViewState:   (1) 页面控件 (.ascx)。 (2) 页面不回传给自身。 (3) 无需对控件的事件处理。 (4) 控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理)。   单个页面或每个页面都禁用 ViewState,如下所示:   单个页面:<%@ Page EnableViewState=”False” %>   每个页面

网站性能优化总结。

ⅰ亾dé卋堺 提交于 2020-03-04 08:52:58
转自 网站性能优化总结。 1. 使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少) 在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。 2. 尽量优化数据库语句,使逻辑尽量简单。 @ 还有就是在使用函数时 charindex >like > padindex 效率依次递减。 @查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。 还有好多,可以总结的,这里就不再描述了。 3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。 使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是没有代价的。尽量减少使用对象,如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate: (1)页面控件 (.ascx) (2)页面不回传给自身。 (3)无需对控件的事件处理。 (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理) 单个页面或每个页面都禁用 ViewState,如下所示: 单个页面:<%@ Page EnableViewState="False" %> 每个页面:在 web.config 中 <Pages

性能优化总结。

老子叫甜甜 提交于 2020-03-04 08:52:12
最近在领导的要求下做了一下项目的优化,总结如下: 1. 使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少) 在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。 2. 尽量优化数据库语句,使逻辑尽量简单。 @ 还有就是在使用函数时 charindex >like > padindex 效率依次递减。 @查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。 还有好多,可以总结的,这里就不再描述了。 3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。 使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是没有代价的。尽量减少使用对象, 如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate: (1)页面控件 (.ascx) (2)页面不回传给自身。 (3)无需对控件的事件处理。 (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理) 单个页面或每个页面都禁用 ViewState,如下所示: 单个页面:<%@ Page EnableViewState="False" %> 每个页面:在 web.config 中 <Pages