百搜论坛欢迎您的加入!
adimg adimg
 
昨日:篇  今日:篇   总帖:篇   会员:
今日:0
文章:68
今日:0
文章:312
今日:0
文章:8
今日:0
文章:224
今日:0
文章:14
今日:0
文章:32
今日:0
文章:0
今日:0
文章:0
今日:0
文章:23
今日:0
文章:115
今日:0
文章:1
今日:0
文章:4
今日:0
文章:10
今日:0
文章:26
今日:0
文章:10
今日:0
文章:0
iOS
今日:0
文章:0
今日:0
文章:0
今日:0
文章:1
今日:0
文章:2
今日:0
文章:5
今日:0    总帖:1035
admin
990
这次给大家带来html中如何使用js来获取本地系统时间,html中使用js来获取本地系统时间的注意事项有哪些,下面就是实战案例,一起来看一下。代码如下:123456<div id="名称"> <script language=Javascript> var now=new Date() document.write(1900+now.getYear()+"-"+(now.getMonth()+1)+"-"+now.getDate()+" "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()) </script> </div>相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!相关阅读:Html中有哪些标记文字注释的符号html的转义字符怎样通过代码识别div与span有什么区别以上就是html中如何使用js来获取本地系统时间的详细内容
官方动态 0 0 1412天前
admin
945
这次给大家带来怎么给span标记样式设置width属性,给span标记样式设置width属性的注意事项有哪些,下面就是实战案例,一起来看一下。直接给span标记的样式设定width属性,会发现不会产生效果。 如果设置display:block,width属性生效,但是此时的span跟div一样了。 如果设置display:inline-block,则span并列在同行,而且width属性生效。 元素display属性的常见值说明: 1)block:块对象的默认值。将对象强制作为块对象呈递,为对象之后添加新行。 2)inline:内联对象的默认值。将对象强制作为内联对象呈递,从对象中删除行。 3)inline-block:将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内。 4)non:隐藏对象。与 visibility 属性的hidden值不同,其不为被隐藏的对象保留其物理空间。相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!相关阅读:Div怎样设置边框和透明度样式iframe的子页面怎样操作父页屏蔽页面弹出层效果HTML的meta viewport属性应该如何使用怎么修改form的默认提交方式以上就是怎么给span标记样式设置width属性的详细内容
官方动态 0 0 1412天前
admin
997
这次给大家带来html里table表数据如何转为Json格式,html里table表数据转为Json格式的注意事项有哪些,下面就是实战案例,一起来看一下。<table>表数据转 Json 格式的javascript函数如下 123456789101112131415161718192021222324252627282930313233<script> var keysArr = new Array("key0", "key1","key2"); function TableToJson(tableid) { //tableid是你要转化的表的表名,是一个字符串,如"example" var rows = document.getElementById(tableid).rows.length; //获得行数(包括thead) var colums = document.getElementById(tableid).rows[0].cells.length; //获得列数 var json = "["; var tdValue; for (var i = 1; i < rows; i++) { //每行 json += "{"; for (var j = 0; j < colums; j++) { tdName = keysArr[j]; //Json数据的键 json += "\""; //加上一个双引号 json += tdName; json += "\""; json += ":"; tdValue = document.getElementById(tableid).rows[i].cells[j].innerHTML;//Json数据的值 if (j === 1) {//第1列是日期格式,需要按照json要求做如下添加 tdValue = "\/Date(" + tdValue + ")\/"; } json += "\""; json += tdValue; json += "\""; json += ","; } json = json.substring(0, json.length - 1); json += "}"; json += ","; } json = json.substring(0, json.length - 1); json += "]"; return json; } </script>相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!相关阅读:html怎样重定向连接html与xhtml和xml有什么区别以上就是html里table表数据如何转为Json格式的详细内容
官方动态 0 0 1412天前
admin
1053
这次给大家带来如何通过display或visibility来实现HTML元素的显示与隐藏,通过display或visibility来实现HTML元素的显示与隐藏的注意事项有哪些,下面就是实战案例,一起来看一下。有些时候我们需要根据某些条件来控制Web页面中的HTML元素显示还是隐藏,可以通过display或visibility来实现。通过下面的例子了解display和visibility的区别,简单的例子代码如下: 12345678910111213141516171819202122232425262728293031323334<html> <head> <title>HTML元素的显示与隐藏控制</title> <script type="text/javascript"> function showAndHidden1(){ var div1=document.getElementById("div1"); var div2=document.getElementById("div2"); if(div1.style.display=='block') div1.style.display='none'; else div1.style.display='block'; if(div2.style.display=='block') div2.style.display='none'; else div2.style.display='block'; } function showAndHidden2(){ var div3=document.getElementById("div3"); var div4=document.getElementById("div4"); if(div3.style.visibility=='visible') div3.style.visibility='hidden'; else div3.style.visibility='visible'; if(div4.style.visibility=='visible') div4.style.visibility='hidden'; else div4.style.visibility='visible'; } </script> </head> <body> <div>display:元素的位置不被占用</div> <div id="div1" style="display:block;">DIV 1</div> <div id="div2" style="display:none;">DIV 2</div> <input type="button" onclick="showAndHidden1();" value="DIV切换" /> <hr> <div>visibility:元素的位置仍被占用</div> <div id="div3" style="visibility:visible;">DIV 3</div> <div id="div4" style="visibility:hidden;">DIV 4</div> <input type="button" onclick="showAndHidden2();" value="DIV切换" /> </body> </html>相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!相关阅读:HTML中定义多个class属性无效html里怎样实现异步上传文件以上就是如何通过display或visibility来实现HTML元素的显示与隐藏的详细内容
官方动态 0 0 1412天前
admin
1373
随着前端行业的快速发展,很多人都纷纷加入到前端开发行业当中,其中也包括一些女孩子,那么前端开发适合女生吗?女生学前端开发怎么样?下面php中文网就为大家详细讲解一下女孩子做前端好不好。【推荐阅读:前端开发用什么工具】一:前端开发适合女生吗web前端可以说是十分的火热,web前端拥有独特的优势,吸引了很多人学习,也有一部分的女孩子也纷纷加入进来,当然女孩子学习前端要多男孩子有耐心,在工作中,能活跃公司气氛,但是对整个web开发来说,女生从事web行业比较少,很多公司也是很欢迎女生来公司做开发。在现实中,女生学习前端开发也不少,往往成果比男生还要好,我们都知道前端主要是一些设计和交互方面,通常情况下,女生的对页面把控效果要好,更有美感,这些优势男生是天生不具备的,所以说女生学习前端也是没有问题的。二:什么样的女生合适做web前端开发1.有自信的女生现在很多女生在没有学习前端之前都感觉自己学不会,当然这种女生是不合适做前端开发的,而有的女生很有自信,不会感觉自己学不会,并且坚持对前端开发学习,不受到外界的影响,有自己的学习目标。2.想要提升自己有些女生通过做一些项目,来增加一些前端开发的经验,对前端开发十分感兴趣,感觉自己经验比较少,想要提升下。3.对人生合理规划对自己人生合理规划,愿意提升自己,并且也愿意接受高薪的女生。以上就是对前端开发适合女生吗的全部介绍,更多有关HTML教程,请关注php中文网。以上就是前端开发适合女生吗?女生必看的详细内容
官方动态 0 0 1412天前
admin
965
什么是.htaccess?.htaccess(超文本访问)是许多Web服务器根据目录应用设置的有用文件,允许在运行时覆盖Apache服务器的默认配置。使用.htaccess,我们可以在运行时轻松启用或禁用任何功能。.htaccess是一个完整的文件名,不仅仅是文件的扩展名。使用.htaccess配置时要注意,任何小错误都可能会阻止整个网站。很可能我们在.htaccess文件中会遇到状态码为500的错误。.htaccess的用途?我们可以使用.htaccess在运行时完成各种任务,下面列出了.htaccess的一些最常用的用法。1、重定向或重写URL使用.htaccess,我们可以轻松地将用户从一个URL重定向到另一个URL。此外,我们还可以在浏览器窗口中不更改URL的情况下将URL指向其他URL。2、启用密码保护使用.htaccess,我们可以在整个站点或特定目录访问上启用基本的HTTP身份验证。它可以防止未经授权访问数据。3、定义自定义错误页面当我们的网站在后端遇到任何错误时,Web服务器会显示每个错误的预定义错误页面。我们可以重新设计自己的错误页面,并在网站发生错误时向最终用户显示。4、允许或拒绝用户我们可以简单地限制任何用户访问基于该IP地址的特定网页的整个网站。可以简单地允许我们的安全页面仅从特定的ips访问。在这种情况下,如果任何用户试图从未经授权的页面访问安全页面都将获得错误页面。5、更改网址.htaccess广泛用于更改网站的URL,使其简单易用。我们可以轻松转换在网络浏览器中显示的网址。以上就是.htaccess是什么文件?有什么用途?的详细内容
官方动态 0 0 1412天前
admin
960
根据SEO专家的说法,如果你的网站URL中包含有.php、.htm或.html扩展名,则对SEO没有影响。那么为什么我们需要从URL中删除这些扩展。正如专家所说,我认为在URL中没有文件扩展名有很多优点。后端技术对最终用户是隐藏的。但对于SEO来说,确定这项技术并不难。最好的优点是我们可以轻松地更改后端技术,而不影响页面的SEO。首先在应用程序文档根目录中创建一个.htaccess文件,并根据需要在文件中添加以下值以删除文件扩展名。从URL中删除.php扩展名例如,需要将网址从http://example.com/demo.php更改为http://example.com/demo。可以编辑.htaccess文件并添加以下设置。123RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^([^.]+)$ $1.php [NC,L]现在,如果用户在浏览器中访问/demo,它将显示/demo.php中的内容。但是,如果任何用户输入的完整URL为http://example.com/demo.php,则不会重定向。现在需要向.htaccess文件添加更多规则。123456RewriteEngine onRewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^ %{REQUEST_URI}.php [NC,L]从URL中删除.html扩展名例如,需要将网址从http://example.com/demo.html转换为http://example.com/demo。需要编辑.htaccess文件并添加以下设置。123RewriteEngine OnRewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^([^。] +)$ $ 1.html [NC,L]现在,如果用户在浏览器中访问/demo,它将显示/demo.html中的内容。现在,可能需要将键入完整URL(http://example.com/demo.html)的用户重定向到新的URL(http://example.com/demo)。123456RewriteEngine onRewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -fRewriteRule ^ %{REQUEST_URI}.html [NC,L]本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注php中文网的其他相关栏目教程!!!以上就是如何使用.htaccess从URL中删除文件扩展名(.php和.html)的详细内容
官方动态 0 0 1412天前
admin
982
本篇文章给大家带来的内容是关于可替换元素是什么?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。最近在群聊里偶然看到有位仁兄发了张今日头条前端面试题的截图,其中关于 HTML 的只有一题,如下:请问什么是可替换元素和非可替换元素,它们的差异是什么?并举例说明。前端面试中 HTML 的题目本来就最少,而且并不难,翻来覆去也就那几样。我们之前已经谈到过最经典的 HTML 语义化 ,今天就借此机会来谈谈可替换元素。释义什么是可替换元素?顾名思义,就是会被替换的元素。 (尬笑……比如一个典型的可替换元素 img:1<img src=xxx.jpg>我们并没有在 img 标签中写入任何内容,那它的内容从哪里来的呢?是浏览器去下载 src 属性给到的图片,并用该图片资源替换掉 img 标签,而且浏览器在下载前并不知道图片的宽高。所以,可替换元素比较特殊,它的宽高是由其加载的内容决定的。(当然 CSS 可以覆盖其样式)示例还是用 img 标签举几个例子:1<img src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">该图片在页面中展现出来的话,就是图片本身本身的宽高。img 元素也支持 width 和 height 属性:1<img width="80" height="80" src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">此时该元素展现出来就是宽高为 80 像素。如果我们再用 CSS 去覆盖其样式:1234img {  width: 60px;  height: 60px;}该元素的展现即为 60 像素。MDN 的释义看过上面的例子之后我们再来理解概念性的知识就比较容易了。可替换元素(replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。简单来说,它们的内容不受当前文档的样式的影响。CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容。典型的可替换元素有 <iframe> <video> <embed> <img> ,还有一些元素仅在特定情况下被作为可替换元素处理,比如 <input> 。【相关推荐:HTML视频教程】以上就是可替换元素是什么?(附示例)的详细内容
官方动态 0 0 1412天前
admin
1085
html中使得div居中的方法有:margin方法通过设置margin的左边距和上边距的值为父元素减去子元素再除以2的值来使div居中;另外position方法也可以使div居中在页面布局时经常会将网页的主体部分居中在页面上,这就需要我们实现div水平居中,接下来将在文章中为大家具体介绍如何使得div居中在页面中,具有一定的参考价值,希望对大家有所帮助【推荐课程:HTML教程】margin方法可以通过margin来使得div居中,通过给margin-left设置的值为父元素的宽减去子元素的宽再除以2(本例中:(400-100)/2=150px),margin-top的值为父元素的高度减去子元素的高度值再除以2(本例中:(300-100)/2=100px)例:123456789101112131415161718192021<style>.box{width:400px;height: 300px;border: 1px solid #ccc;}.box1{width:100px;height: 100px;background-color: pink;margin-left: 150px;margin-top:100px;}</style></head><body><div>  <div></div></div></body></html>效果图:position方法可以通过定位的方法来使得div垂直居中,我们可以设置子元素绝对定位,另外设置top和left值为50%,但是需要注意一点在用定位是也要设置margin值,其中margin-left与margin-right的值都为负值,且值的大小是子元素宽高的一半例:123456789101112131415161718192021222324<style>    .box{         width:400px;         height: 300px;         border: 1px solid #ccc;         position: relative;    }    .box1{        width:100px;        height: 100px;        background-color: pink;        position: absolute;        top: 50%;        left: 50%;        margin:-50px 0 0 -50px              }    </style></head><body><div class="box"><div class="box1"></div></div></body></html>效果图:本文参考:https://www.html.cn/doc/html/layout/HTML标签索引:https://www.html.cn/sitemap.html总结:以上就是本篇文章的全部内容了,希望通过这篇文章可以帮助大家学会如何将div居中在页面上以上就是html中如何让div居中的详细内容
官方动态 0 0 1412天前
admin
1112
在HTML中我们经常会使用到id和class属性,它们之间的作用相似,那么它们之间有什么区别?下面本篇文章就来简单比较一下HTML中id和class属性,介绍HTML中id和class属性之间的区别,希望对大家有所帮助。【视频教程推荐:HTML教程】HTML id属性id属性是用于指定文档的唯一标识符;因而,可以使用id在页面中区分不同的模块。CSS和JavaScript使用 id属性来为唯一元素执行特定任务。在CSS中,id属性使用#符号后跟id编写。基本语法:HTML中:1<element id =“id_name”>CSS样式表中:123#id_name {    // CSS属性}示例:123456789101112131415161718192021<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">    <title> HTML id 属性 </title>            <style>         #demo{             color:red;             font-size:25px;         }     </style> </head>    <body style="text-align:center">     <h1>Hello World!</h1>     <p id="demo">欢迎来到PHP中文网!</p>     <p >php从入门到精通,一站式php自学平台!</p> </body>    </html>输出:HTML class属性class属性用于为HTML元素指定一个或多个类名;class属性可用于任何HTML元素。CSS和JavaScript可以使用类名来为具有指定类名的元素执行某些任务。CSS样式表中的类名称使用“.”符号。基本语法:HTML中:1<element class=“class_name”>CSS样式表中:123.class_name {    // CSS属性}示例:1234567891011121314151617181920<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">    <title> HTML class 属性 </title>            <style>         .demo{             color:red;             font-size:25px;         }     </style> </head>    <body style="text-align:center">     <p class="demo">Hello World!</p>     <p class="demo">欢迎来到PHP中文网!</p> </body>    </html>输出:说明:同一个类名在在页面里面可以多次出现,这样可以重复引用同一个css,减小工作量和代码量。总结id和class属性之间的区别是:id具有唯一性,在页面里面只能出现一次,最多只能应用于一个元素,不能重复使用。class具有普遍性,在页面里面可以多次出现,应用于多个元素。以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!以上就是HTML中id和class属性之间的区别是什么?的详细内容
官方动态 0 0 1412天前
admin
1042
前端工程师打交道最多的就是浏览器,不管做什么都离不开浏览器,其中HTTP协议往往会被我们忽略,但其实资源缓存、CDN加载、页面性能优化等等都离不开对HTTP协议的了解。HTTP也叫作超文本传输协议,全称:Hyper Transfer Protocol。最初HTTP只能传输HTML文件,慢慢的现在可以传输文字、图像、视频和各种流文件。HTTP是无状态的:同一个客户端,连续发起多次请求,对HTTP服务器来说,都是新的请求,HTTP没办法知道来自一个客户端。HTTP消息结构:要看具体消息结构需要用抓包工具,所以这边只有简单介绍,没有具体实例。Request和response的消息结构基本一样。Header:分为request/response line和request/response header。request/response line:包括请求的方法Method(GET/POST)、请求资源的路径path to resource和http协议的版本号。request/response header:这边就是各种请求头了。Body:响应体,一般是HTML文件。如果是get请求,是没有响应体的。HTTP请求方法:GET 请求获取Request-URI所标识的资源POST 在Request-URI所标识的资源后附加新的数据HEAD 请求获取由Request-URI所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI作为其标识DELETE 请求服务器删除Request-URI所标识的资源TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT 保留将来使用OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求对于我们来说,常用的就是GET、和POST。再次声明,不用表单提交,get不存在跟post比较有安全性问题。HTTP状态码:1XX 提示信息 - 表示请求已被成功接收,继续处理。2XX 成功 - 表示请求已被成功接收,理解,接受3XX 重定向 - 要完成请求必须进行更进一步的处理4XX 客户端错误 - 请求有语法错误或请求无法实现5XX 服务器端错误 - 服务器未能实现合法的请求状态码很多,可以自行了解,我觉得有几个是必须知道的。HTTP通信过程:根据URL查询DNS、查找服务器、建立TCP连接、发送请求、服务器响应。对于HTTP,我觉得基础的要知道HTTP是无状态的、HTTP的消息结构、基本请求方法、基本状态码这四部分。HTTP协议需要学习的还很多很多,这只是基本需要知道的。欢迎关注Coding个人笔记 公众号前端工程师打交道最多的就是浏览器,不管做什么都离不开浏览器,其中HTTP协议往往会被我们忽略,但其实资源缓存、CDN加载、页面性能优化等等都离不开对HTTP协议的了解。HTTP也叫作超文本传输协议,全称:Hyper Transfer Protocol。最初HTTP只能传输HTML文件,慢慢的现在可以传输文字、图像、视频和各种流文件。HTTP是无状态的:同一个客户端,连续发起多次请求,对HTTP服务器来说,都是新的请求,HTTP没办法知道来自一个客户端。HTTP消息结构:要看具体消息结构需要用抓包工具,所以这边只有简单介绍,没有具体实例。Request和response的消息结构基本一样。Header:分为request/response line和request/response header。request/response line:包括请求的方法Method(GET/POST)、请求资源的路径path to resource和http协议的版本号。request/response header:这边就是各种请求头了。Body:响应体,一般是HTML文件。如果是get请求,是没有响应体的。HTTP请求方法:GET 请求获取Request-URI所标识的资源POST 在Request-URI所标识的资源后附加新的数据HEAD 请求获取由Request-URI所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI作为其标识DELETE 请求服务器删除Request-URI所标识的资源TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT 保留将来使用OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求对于我们来说,常用的就是GET、和POST。再次声明,不用表单提交,get不存在跟post比较有安全性问题。HTTP状态码:1XX 提示信息 - 表示请求已被成功接收,继续处理。2XX 成功 - 表示请求已被成功接收,理解,接受3XX 重定向 - 要完成请求必须进行更进一步的处理4XX 客户端错误 - 请求有语法错误或请求无法实现5XX 服务器端错误 - 服务器未能实现合法的请求状态码很多,可以自行了解,我觉得有几个是必须知道的。HTTP通信过程:根据URL查询DNS、查找服务器、建立TCP连接、发送请求、服务器响应。对于HTTP,我觉得基础的要知道HTTP是无状态的、HTTP的消息结构、基本请求方法、基本状态码这四部分。HTTP协议需要学习的还很多很多,这只是基本需要知道的。【推荐课程:HTTP视频课程】以上就是前端开发紧密相关的HTTP协议知识的详细内容
官方动态 0 0 1412天前
admin
1052
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。ARP协议可以将网络层地址到任意物理地址转换,从IP地址到MAC地址转换。MAC地址:物理地址,网卡厂家要确保MAC地址全球唯一,48位2进制,显示是12位16进制1.查看我自己的ip,我自己的的ip和网络地址2.ping一下局域网其他主机 ping 10.235.173.16 ,此时ARP协议会把ip地址转成mac地址,存在缓存里,使用arp -a命令查看3.ping一下外网,会把我局域网的网关mac地址存下来4.ARP欺骗:欺骗别人网络通信IP的MAC地址,使对方找到我指定的mac地址,属于数据链路层的故障arp -s ip地址 mac地址 //设置个静态的,arp绑定,绑定指定的ip地址对应的mac地址,这样就无法欺骗了arp -d 删除所有缓存【推荐课程:TCP/IP视频课程】以上就是[TCP/IP] 网络层-ARP协议的详细内容
官方动态 0 0 1412天前
admin
1064
Ethereal 是现在较为流行的一种计算机网络调试和数据包嗅探软件。本文小编将带大家一起学习ethereal 抓包分析数据帧。1.下载 http://dx1.pc0359.cn/soft/e/ethereal.rar2.打开软件,指定抓取的网卡,下面是我抓取自己的主要网卡数据3.开启个ping命令 , 不停的ping一台服务器,看icmp协议 ping ip地址 -t4.查看数据帧的目标MAC地址 和 源MAC地址 和类型 0800表示ip 和数据【推荐课程:TCP/IP视频课程】以上就是[TCP/IP] 数据链路层-ethereal 抓包分析数据帧的详细内容
官方动态 0 0 1412天前
admin
1097
1.可以把七层协议简化成四层协议链路层 网络层 传输层 应用层2.通过路由器连接的两个网络网络层ip提供的是一个逐跳协议,提供了一种不可靠的服务,中间有可能会丢传输层tcp在ip的基础上提供了可靠的传输层比喻:tcp就是淘宝卖家 ,ip就是包裹,中间如果包裹丢了,卖家会重新发一个包裹,这里会有一个确认的过程3.udp是不可靠的,它不会去确认,丢了就丢了,比如语音就用这个,syslog也用这个4.icmp这个附属协议,ping就是用的这个5.封装,每一层都会留下自己的标记,从应用层开始加个头部,tcp加个头部,ip加个头部,以太网加个头部,封装成帧;帧的数据长度在46~1500字节之间6.分用,接收方就是分用,从上面的封装中,解出来里面的头部7.端口号,源端口号一般是随机分配的,目的端口号一般是知名的端口或者指定的端口,一定要注意是去还是回,因为tcp是全双工的8.链路层,以太网和ieee 802封装区分以太网和802.3封装,只需要看以太网的封装是2位类型,802.3封装是2位长度,我们一般看到的都是以太网帧,很少见到802.3的帧以太网头部就三个,源,目的,协议类型,0800代表是ip协议其他补充:1.子网掩码就是告诉我们哪是网络部分,哪是主机部分,比如子网掩码是255.0.0.0,ip是13.0.0.0 就是告诉我们13是网络部分,其余的是主机部分2.网关就是到其他网段的,应该给谁,比如我的网关是192.168.1.1,路由器的作用就是在不同网段转发数据3.MAC地址就是出厂的时候固定在芯片里面了,也叫物理地址,48位的二进制,电脑上显示的是12位的十六进制,比如我的是50-7B-9D-25-B0-EF ipconfig /all4.计算机网卡有mac地址,计算机有ip地址5.数据包: 数据-源地址-目标地址-源mac地址-目标mac地址(路由器)经过下一跳的时候会修改mac地址一步一步转到服务器那【推荐课程:TCP/IP视频教程】以上就是[HTTP] tcp/ip详解 链路层 网络层 传输层 应用层的详细内容
官方动态 0 0 1412天前
admin
936
之前学过做静态网页,但都只是自己看的,虽然是知道要发布出去才能在浏览器上看到,但是一直以来没有了解过,今天百度了一下,终于初步测试完成。本文我将介绍一下我的上线网站的主要流程,感兴趣的朋友来学习一下吧。1.首先我了解到上线网站需要两点,服务器和域名。域名是在阿里云买的,19元/年(挑便宜的买)。然后服务器是找的一个免费服务器,百度可以自己搜索,我用的是 三丰云。2.然后域名需要解析,把网站域名和服务器ip连接起来。也就是下面这个记录值,填入服务器ip3.一切都搭建好后,然后将自己写的网页放在服务器里的web目录下。通过文件浏览器上传网页。优点是操作方便,但只适用于Windows系统的主机,  1.在本地电脑双击 计算机 (以Windows 7操作系统为例 )。  2.在红框处输入ftp://服务器IP地址,并回车    3.输入账号和密码:在用户名处输入服务器的管理账号,在密码处输入服务器的管理密码      4.单击登录后,可看到FTP上所有的文件,可以将本地的网页文件复制后粘贴到 FTP 目录下。  默认的三个文件夹,  |-- Web 网站根目录, 网页文件上传到这个目录  |-- Log 网站日志文件  |--data 数据库文件放在这个目录下    然后我的测试成功了,这只是简单的发布网页。相关教程:HTML视频教程以上就是小白首次个人网页上线流程的详细内容
官方动态 0 0 1412天前
admin
1094
本文中主要讲述了用Nginx配置web服务器的主要流程,感兴趣的朋友可以看一下!1. 查看Nginx的配置文件  命令 nginx -t ,如图2. 进入配置文件目录 并查看目录cd /usr/loxa/nginx/conf , 可以看见有一个 nginx.conf文件 一个vhost 目录3. 我们先编辑 nginx.conf, 主要的这个 service这是另一个配置最后 可以引入刚刚的 vhost 文件,开始的时候 里面是空的接着 我们来看一下这个目录下的文件, 打开一个 查看这就是 俩个站点的 全部文件改完后 service nginx reload (nginx配置 重新加载)相关教程:HTML视频教程想了解更多技术方面的教程,请关注PHP中文网了解更多教程,祝你成为业界大牛!以上就是如何用Nginx配置web服务器的详细内容
官方动态 0 0 1412天前
admin
1069
html中的meta标签是在head区域中的一个辅助性标签,一般用于页面的说明,关键字和其他元数据,这些数据将服务于浏览器,搜索引擎等,它有两个属性分别是name属性和http-equiv属性学前端的过程中对于meta标签的了解大多都是<meta charset="UTF-8">这句,打开任意的网站我们都会看见这句话但是对于meta标签却不怎么熟悉,接下来在文章中将为大家具体介绍这个标签,具有一定的参考作用,希望对大家有所帮助。【推荐课程:HTML教程】meta标签介绍meta标签是HTML语言head区域的一个辅助性标签,常用于定义页面的说明,关键字,最后修改的日期和其他的元数据。这些元数据将服务于浏览器,搜索引擎和其他网络服务。meta标签的组成meta标签共有两个属性,分别是http-equiv属性和name属性。name属性name属性主要是用于描述网页,比如网页的关键词,叙述等。与之对应的属性值为content,content中的内容是对name填入类型的具体描述,便于搜索引擎抓取。meta标签中name属性语法格式是:1<meta name="参数" content="具体的描述">其中name属性共有以下几种参数。(A-C为常用属性)(1) keywords(关键字)说明:用于告诉搜索引擎,你网页的关键字。举例:1<meta name="keywords" content="PHP中文网">(2)description(网站内容的描述)说明:用于告诉搜索引擎,你网站的主要内容。举例:1<meta name="description" content="php中文网提供大量免费、原创、高清的php视频教程">(3)viewport(移动端的窗口)说明:这个概念较为复杂,具体的会在下篇博文中讲述。这个属性常用于设计移动端网页。在用bootstrap,AmazeUI等框架时候都有用过viewport。1<meta name="viewport" content="width=device-width, initial-scale=1">(4) robots(定义搜索引擎爬虫的索引方式)说明:robots用来告诉爬虫哪些页面需要索引,哪些页面不需要索引。content的参数有all,none,index,noindex,follow,nofollow。默认是all。1<meta name="robots" content="none">具体参数如下:1、none : 搜索引擎将忽略此网页,等价于noindex,nofollow。2、noindex : 搜索引擎不索引此网页。3、nofollow: 搜索引擎不继续通过此网页的链接索引搜索其它的网页。4、all : 搜索引擎将索引此网页与继续通过此网页的链接索引,等价于index,follow。5、index : 搜索引擎索引此网页。6、follow : 搜索引擎继续通过此网页的链接索引搜索其它的网页。(5)author(作者)说明:用于标注网页作者举例:1<meta name="author" content="PHP中文网">(6) generator(网页制作软件)说明:用于标明网页是什么软件做的举例: (不知道能不能这样写):1<meta name="generator" content="Sublime Text3">(7)copyright(版权)说明:用于标注版权信息举例:1<meta name="copyright" content="PHP中文网"> //代表该网站为PHP中文网个人版权所有。(8)revisit-after(搜索引擎爬虫重访时间)说明:如果页面不是经常更新,为了减轻搜索引擎爬虫对服务器带来的压力,可以设置一个爬虫的重访时间。如果重访时间过短,爬虫将按它们定义的默认时间来访问。举例:1<meta name="revisit-after" content="7 days" >(9)renderer(双核浏览器渲染方式)说明:renderer是为双核浏览器准备的,用于指定双核浏览器默认以何种方式渲染页面。比如说360浏览器。举例:123<meta name="renderer" content="webkit"> //默认webkit内核<meta name="renderer" content="ie-comp"> //默认IE兼容模式<meta name="renderer" content="ie-stand"> //默认IE标准模式http-equiv属性http-equiv顾名思义,相当于HTTP的作用。meta标签中http-equiv属性语法格式是:1<meta http-equiv="参数" content="具体的描述">其中http-equiv属性主要有以下几种参数:(1) content-Type(设定网页字符集)(推荐使用HTML5的方式)说明:用于设定网页字符集,便于浏览器解析与渲染页面举例:1<meta http-equiv="content-Type" content="text/html;charset=utf-8">  //旧的HTML,不推荐1<meta charset="utf-8"> //HTML5设定网页字符集的方式,推荐使用UTF-8(2)X-UA-Compatible(浏览器采取何种版本渲染当前页面)说明:用于告知浏览器以何种版本来渲染页面。(一般都设置为最新模式,在各大框架中这个设置也很常见。)1<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> //指定IE和Chrome使用最新版本渲染当前页面(3) cache-control(指定请求和响应遵循的缓存机制)说明:指导浏览器如何缓存某个响应以及缓存多长时间1<meta http-equiv="cache-control" content="no-cache">共有以下几种用法:no-cache: 先发送请求,与服务器确认该资源是否被更改,如果未被更改,则使用缓存。no-store: 不允许缓存,每次都要去服务器上,下载完整的响应。(安全措施)public : 缓存所有响应,但并非必须。因为max-age也可以做到相同效果private : 只为单个用户缓存,因此不允许任何中继进行缓存。(比如说CDN就不允许缓存private的响应)maxage : 表示当前请求开始,该响应在多久内能被缓存和重用,而不去服务器重新请求。例如:max-age=60表示响应可以再缓存和重用 60 秒。禁止百度自动转码说明:用于禁止当前页面在移动端浏览时,被百度自动转码。虽然百度的本意是好的,但是转码效果很多时候却不尽人意。所以可以在head中加入例子中的那句话,就可以避免百度自动转码了。1<meta http-equiv="Cache-Control" content="no-siteapp" />(4)expires(网页到期时间)说明:用于设定网页的到期时间,过期后网页必须到服务器上重新传输。1<meta http-equiv="expires" content="Sunday 26 October 2016 01:00 GMT" />(5) refresh(自动刷新并指向某页面)说明:网页将在设定的时间内,自动刷新并调向设定的网址。1<meta http-equiv="refresh" content="2;URL=http://www.php.cn/"> //意思是2秒后跳转到PHP中文网(6) Set-Cookie(cookie设定)说明:如果网页过期。那么这个网页存在本地的cookies也会被自动删除。12<meta http-equiv="Set-Cookie" content="name, date"> //格式<meta http-equiv="Set-Cookie" content="User=Lxxyx; path=/; expires=Sunday, 10-Jan-16 10:00:00 GMT"> //具体范例总结:meta标签的自定义属性实在太多了。所以只总结了一些常用的,希望对大家有所帮助。以上就是html中的meta标签是什么?有哪些属性?的详细内容
官方动态 0 0 1412天前
admin
824
本篇文章的主要内容是关于介绍影响HTTP性能的常见因素,具有一定的参考价值,感兴趣的朋友可以了解一下。我们这里讨论HTTP性能是建立在一个最简单模型之上就是单台服务器的HTTP性能,当然对于大规模负载均衡集群也适用毕竟这种集群也是由多个HTTTP服务器的个体所组成。另外我们也排除客户端或者服务器本身负载过高或者HTTP协议实现的软件使用不同的IO模型,另外我们也忽略DNS解析过程和web应用程序开发本身的缺陷。从TCP/IP模型来看,HTTP下层就是TCP层,所以HTTP的性能很大程度上取决于TCP性能,当然如果是HTTPS的就还要加上TLS/SSL层,不过可以肯定的是HTTPS性能肯定比HTTP要差,其通讯过程这里都不多说总之层数越多性能损耗就越严重。在上述条件下,最常见的影响HTTP性能的包括:TCP连接建立,也就是三次握手阶段TCP慢启动TCP延迟确认Nagle算法TIME_WAIT积累与端口耗尽服务端端口耗尽服务端HTTP进程打开文件数量达到最大TCP连接建立通常如果网络稳定TCP连接建立不会消耗很多时间而且也都会在合理耗时范围内完成三次握手过程,但是由于HTTP是无状态的属于短连接,一次HTTP会话接受后会断开TCP连接,一个网页通常有很多资源这就意味着会进行很多次HTTP会话,而相对于HTTP会话来说TCP三次握手建立连接就会显得太耗时了,当然可以通过重用现有连接来减少TCP连接建立次数。TCP慢启动TCP拥塞控制手段1,在TCP刚建立好之后的最初传输阶段会限制连接的最大传输速度,如果数据传输成功,后续会逐步提高传输速度,这就TCP慢启动。慢启动限制了某一时刻可以传输的IP分组2数量。那么为什么会有慢启动呢?主要是为了避免网络因为大规模的数据传输而瘫痪,在互联网上数据传输很重要的一个环节就是路由器,而路由器本身的速度并不快加之互联网上的很多流量都可能发送过来要求其进行路由转发,如果在某一时间内到达路由器的数据量远大于其发送的数量那么路由器在本地缓存耗尽的情况下就会丢弃数据包,这种丢弃行为被称作拥塞,一个路由器出现这种状况就会影响很多条链路,严重的会导致大面积瘫痪。所以TCP通信的任何一方需要进行拥塞控制,而慢启动就是拥塞控制的其中一种算法或者叫做机制。你设想一种情况,我们知道TCP有重传机制,假设网络中的一个路由器因为拥塞而出现大面积丢包情况,作为数据的发送方其TCP协议栈肯定会检测到这种情况,那么它就会启动TCP重传机制,而且该路由器影响的发送方肯定不止你一个,那么大量的发送方TCP协议栈都开始了重传那这就等于在原本拥塞的网络上发送更多的数据包,这就等于火上浇油。通过上面的描述得出即便是在正常的网络环境中,作为HTTP报文的发送方与每个请求建立TCP连接都会受到慢启动影响,那么又根据HTTP是短连接一次会话结束就会断开,可以想象客户端发起HTTP请求刚获取完web页面上的一个资源,HTTP就断开,有可能还没有经历完TCP慢启动过程这个TCP连接就断开了,那web页面其他的后续资源还要继续建立TCP连接,而每个TCP连接都会有慢启动阶段,这个性能可想而知,所以为了提升性能,我们可以开启HTTP的持久连接也就是后面要说的keepalive。另外我们知道TCP中有窗口的概念,这个窗口在发送方和接收方都有,窗口的作用一方面保证了发送和接收方在管理分组时变得有序;另外在有序的基础上可以发送多个分组从而提高了吞吐量;还有一点就是这个窗口大小可以调整,其目的是避免发送方发送数据的速度比接收方接收的速度快。窗口虽然解决了通信双发的速率问题,可是网络中会经过其他网络设备,发送方怎么知道路由器的接收能力呢?所以就有了上面介绍的拥塞控制。TCP延迟确认首先要知道什么是确认,它的意思就是发送方给接收方发送一个TCP分段,接收方收到以后要回传一个确认表示收到,如果在一定时间内发送方没有收到该确认那么就需要重发该TCP分段。确认报文通常都比较小,也就是一个IP分组可以承载多个确认报文,所以为了避免过多的发送小报文,那么接收方在回传确认报文的时候会等待看看有没有发给接收方的其他数据,如果有那么就把确认报文和数据一起放在一个TCP分段中发送过去,如果在一定时间内容通常是100-200毫秒没有需要发送的其他数据那么就将该确认报文放在单独的分组中发送。其实这么做的目的也是为了尽可能降低网络负担。一个通俗的例子就是物流,卡车的载重是一定的,假如是10吨载重,从A城市到B城市,你肯定希望它能尽可能的装满一车货而不是来了一个小包裹你就立刻起身开向B城市。所以TCP被设计成不是来一个数据包就马上返回ACK确认,它通常都会在缓存中积攒一段时间,如果还有相同方向的数据就捎带把前面的ACK确认回传过去,但是也不能等的时间过长否则对方会认为丢包了从而引发对方的重传。对于是否使用以及如何使用延迟确认不同操作系统会有不同,比如Linux可以启用也可以关闭,关闭就意味着来一个就确认一个,这也是快速确认模式。需要注意的是是否启用或者说设置多少毫秒,也要看场景。比如在线游戏场景下肯定是尽快确认,SSH会话可以使用延迟确认。对于HTTP来说我们可以关闭或者调整TCP延迟确认。Nagle算法这个算法其实也是为了提高IP分组利用率以及降低网络负担而设计,这里面依然涉及到小报文和全尺寸报文(按以太网的标准MTU1500字节一个的报文计算,小于1500的都算非全尺寸报文),但是无论小报文怎么小也不会小于40个字节,因为IP首部和TCP首部就各占用20个字节。如果你发送一个50个字节小报文,其实这就意味着有效数据太少,就像延迟确认一样小尺寸包在局域网问题不大,主要是影响广域网。这个算法其实就是如果发送方当前TCP连接中有发出去但还没有收到确认的报文的时候,那么此时如果发送方还有小报文要发送的话就不能发送而是要放到缓冲区等待之前发出报文的确认,收到确认之后,发送方会收集缓存中同方向的小报文组装成一个报文进行发送。其实这也就意味着接收方返回ACK确认的速度越快,发送方发送数据也就越快。现在我们说说延迟确认和Nagle算法结合将会带来的问题。其实很容易看出,因为有延迟确认,那么接收方则会在一段时间内积攒ACK确认,而发送方在这段时间内收不到ACK那么也就不会继续发送剩下的非全尺寸数据包(数据被分成多个IP分组,发送方要发送的响应数据的分组数量不可能一定是1500的整数倍,大概率会发生数据尾部的一些数据就是小尺寸IP分组),所以你就看出这里的矛盾所在,那么这种问题在TCP传输中会影响传输性能那么HTTP又依赖TCP所以自然也会影响HTTP性能,通常我们会在服务器端禁用该算法,我们可以在操作系统上禁用或者在HTTP程序中设置TCP_NODELAY来禁用该算法。比如在Nginx中你可以使用tcp_nodelay on;来禁用。TIME_WAIT积累与端口耗尽3这里指的是作为客户端的一方或者说是在TCP连接中主动关闭的一方,虽然服务器也可以主动发起关闭,但是我们这里讨论的是HTTP性能,由于HTTP这种连接的特性,通常都是客户端发起主动关闭,客户端发起一个HTTP请求(这里说的是对一个特定资源的请求而不是打开一个所谓的主页,一个主页有N多资源所以会导致有N个HTTP请求的发起)这个请求结束后就会断开TCP连接,那么该连接在客户端上的TCP状态会出现一种叫做TIME_WAIT的状态,从这个状态到最终关闭通常会经过2MSL4的时长,我们知道客户端访问服务端的HTTP服务会使用自己本机随机高位端口来连接服务器的80或者443端口来建立HTTP通信(其本质就是TCP通信)这就意味着会消耗客户端上的可用端口数量,虽然客户端断开连接会释放这个随机端口,不过客户端主动断开连接后,TCP状态从TIME_WAIT到真正CLOSED之间的这2MSL时长内,该随机端口不会被使用(如果客户端又发起对相同服务器的HTTP访问),其目的之一是为了防止相同TCP套接字上的脏数据。通过上面的结论我们就知道如果客户端对服务器的HTTP访问过于密集那么就有可能出现端口使用速度高于端口释放速度最终导致因没有可用随机端口而无法建立连接。上面我们说过通常都是客户端主动关闭连接,TCP/IP详解 卷1 第二版,P442,最后的一段写到 对于交互式应用程序而言,客户端通常执行主动关闭操作并进入TIME_WAIT状态,服务器通常执行被动关闭操作并且不会直接进入TIME_WAIT状态。不过如果web服务器并且开启了keep-alive的话,当达到超时时长服务器也会主动关闭。(我这里并不是说TCP/IP详解错了,而是它在那一节主要是针对TCP来说,并没有引入HTTP,而且它说的是通常而不是一定)我使用Nginx做测试,并且在配置文件中设置了keepalive_timeout 65s;,Nginx的默认设置是75s,设置为0表示禁用keepalive,如下图:下面我使用Chrom浏览器访问这个Nginx默认提供的主页,并通过抓包程序来监控整个通信过程,如下图:从上图可以看出来在有效数据传送完毕后,中间出现了Keep-Alive标记的通信,并且在65秒内没有请求后服务器主动断开连接,这种情况你在Nginx的服务器上就会看到TIME_WAIT的状态。服务端端口耗尽有人说Nginx监听80或者443,客户端都是连接这个端口,服务端怎么会端口耗尽呢?就像下图一样(忽略图中的TIME_WAIT,产生这个的原因上面已经说过了是因为Nginx的keepalive_timeout设置导致的)其实,这取决于Nginx工作模式,我们使用Nginx通常都是让其工作在代理模式,这就意味着真正的资源或者数据在后端Web应用程序上,比如Tomcat。代理模式的特点是代理服务器代替用户去后端获取数据,那么此时相对于后端服务器来说,Nginx就是一个客户端,这时候Nginx就会使用随机端口来向后端发起请求,而系统可用随机端口范围是一定的,可以使用sysctl net.ipv4.ip_local_port_range命令来查看服务器上的随机端口范围。通过我们之前介绍的延迟确认、Nagle算法以及代理模式下Nginx充当后端的客户端角色并使用随机端口连接后端,这就意味着服务端的端口耗尽风险是存在的。随机端口释放速度如果比与后端建立连接的速度慢就有可能出现。不过一般不会出现这个情况,至少我们公司的Nginx我没有发现有这种现象产生。因为首先是静态资源都在CDN上;其次后端大部分都是REST接口提供用户认证或者数据库操作,这些操作其实后端如果没有瓶颈的话基本都很快。不过话说回来如果后端真的有瓶颈且扩容或者改架构成本比较高的话,那么当面对大量并发的时候你应该做的是限流防止后端被打死。服务端HTTP进程打开文件数量达到最大我们说过HTTP通信依赖TCP连接,一个TCP连接就是一个套接字,对于类Unix系统来说,打开一个套接字就是打开一个文件,如果有100个请求连接服务端,那么一旦连接建立成功服务端就会打开100个文件,而Linux系统中一个进程可以打开的文件数量是有限的ulimit -f,所以如果这个数值设置的太小那么也会影响HTTP连接。而对以代理模式运行的Nginx或者其他HTTP程序来说,通常一个连接它就要打开2个套接字也就会占用2个文件(命中Nginx本地缓存或者Nginx直接返回数据的除外)。所以对于代理服务器这个进程可打开的文件数量也要设置的大一点。持久连接Keepalive首先我们要知道keepalive可以设置在2个层面上,且2个层面意义不同。TCP的keepalive是一种探活机制,比如我们常说的心跳信息,表示对方还在线,而这种心跳信息的发送由有时间间隔的,这就意味着彼此的TCP连接要始终保持打开状态;而HTTP中的keep-alive是一种复用TCP连接的机制,避免频繁建立TCP连接。所以一定明白TCP的Keepalive和HTTP的Keep-alive不是一回事。HTTP的keep-alive机制非持久连接会在每个HTTP事务完成后断开TCP连接,下一个HTTP事务则会再重新建立TCP连接,这显然不是一种高效机制,所以在HTTP/1.1以及HTTP/1.0的增强版本中允许HTTP在事务结束后将TCP连接保持打开状态,以便后续的HTTP事务可以复用这个连接,直到客户端或者服务器主动关闭该连接。持久连接减少了TCP连接建立的次数同时也最大化的规避了TCP慢启动带来的流量限制。相关教程:HTTP视频教程再来看一下这张图,图中的keepalive_timeout 65s设置了开启http的keep-alive特性并且设置了超时时长为65秒,其实还有比较重要的选项是keepalive_requests 100;它表示同一个TCP连接最多可以发起多少个HTTP请求,默认是100个。在HTTP/1.0中keep-alive并不是默认使用的,客户端发送HTTP请求时必须带有Connection: Keep-alive的首部来试图激活keep-alive,如果服务器不支持那么将无法使用,所有请求将以常规形式进行,如果服务器支持那么在响应头中也会包括Connection: Keep-alive的信息。在HTTP/1.1中默认就使用Keep-alive,除非特别说明,否则所有连接都是持久的。如果要在一个事务结束后关闭连接,那么HTTP的响应头中必须包含Connection: CLose首部,否则该连接会始终保持打开状态,当然也不能总是打开,也必须关闭空闲连接,就像上面Nginx的设置一样最多保持65秒的空闲连接,超过后服务端将会主动断开该连接。TCP的keepalive在Linux上没有一个统一的开关去开启或者关闭TCP的Keepalive功能,查看系统keepalive的设置sysctl -a | grep tcp_keepalive,如果你没有修改过,那么在Centos系统上它会显示:123net.ipv4.tcp_keepalive_intvl = 75   # 两次探测直接间隔多少秒net.ipv4.tcp_keepalive_probes = 9   # 探测频率net.ipv4.tcp_keepalive_time = 7200  # 表示多长时间进行一次探测,单位秒,这里也就是2小时按照默认设置,那么上面的整体含义就是2小时探测一次,如果第一次探测失败,那么过75秒再探测一次,如果9次都失败就主动断开连接。如何开启Nginx上的TCP层面的Keepalive,在Nginx中有一个语句叫做listen它是server段里面用于设置Nginx监听在哪个端口的语句,其实它后面还有其他参数就是用来设置套接字属性的,看下面几种设置:1234567# 表示开启,TCP的keepalive参数使用系统默认的listen       80 default_server so_keepalive=on;# 表示显式关闭TCP的keepalivelisten       80 default_server so_keepalive=off;# 表示开启,设置30分钟探测一次,探测间隔使用系统默认设置,总共探测10次,这里的设# 置将会覆盖上面系统默认设置listen       80 default_server so_keepalive=30m::10;所以是否要在Nginx上设置这个so_keepalive,取决于特定场景,千万不要把TCP的keepalive和HTTP的keepalive搞混淆,因为Nginx不开启so_keepalive也不影响你的HTTP请求使用keep-alive特性。如果客户端和Nginx直接或者Nginx和后端服务器之间有负载均衡设备的话而且是响应和请求都会经过这个负载均衡设备,那么你就要注意这个so_keepalive了。比如在LVS的直接路由模式下就不受影响,因为响应不经过LVS,不过要是NAT模式就需要留意,因为LVS保持TCP会话也有一个时长,如果该时长小于后端返回数据的时长那么LVS就会在客户端还没有收到数据的情况下断开这条TCP连接。TCP拥塞控制有一些算法,其中就包括TCP慢启动、拥塞避免等算法↩有些地方也叫做IP分片但都是一个意思,至于为什么分片简单来说就是受限于数据链路层,不同的数据链路其MTU不同,以太网的是1500字节,在某些场景会是1492字节;FDDI的MTU又是另外一种大小,单纯考虑IP层那么IP数据包最大是65535字节↩在《HTTP权威指南》P90页中并没有说的特别清楚,这种情况是相对于客户端来说还是服务端,因为很有可能让人误解,当然并不是说服务端不会出现端口耗尽的情况,所以我这里才增加了2项内容↩最长不会超过2分钟↩相关教程:HTTP视频教程以上就是分析影响http性能的常见因素的详细内容
官方动态 0 0 1412天前
admin
982
HTML页面调用PHP文件的方法是要通过JavaScript来实现,在生成静态页面时,可以根据数据库id给html页面生成一个对应的JavaScript文件来调用PHP文件。静态页面看上去好像不能直接调用PHP文件,但是有时候我们可以通过js的方式来调用PHP文件,接下来将在文章中为大家详细介绍,具有一定的参考价值,希望对大家有所帮助。【推荐课程:PHP教程】html本身是无法处理动态请求,要完成调用PHP文件就需要借用JavaScript来实现了。在生成静态页面时,可以根据数据库id给HTML页面生成一个相对应的JavaScript文件。例如果一个HTML文件是123.html,那就在这个页面生成一个1<script type="text/javascript" src="click.php?id=123"></script>然后在click.php这个页面就按照php的语法去处理操作数据库就行。例在页面页面a.html中可以通过以下的代码来将action=test的参数传递到b.php中Javascript代码1<script type="text/javascript" src="b.php?action=test"></script>b.php代码1234<?php$action=$_GET['action'];    echo "document.write('".$action."');n";   ?>当执行a.html文件时,就会调用b.php文件,并将b.php文件的输出作为JS语句来执行,内容为JS传递的参数action的值,也就是在PHP文件中接受过来的action的值总结:以上就是本篇文章的全部内容了,希望对大家有所帮助。以上就是html页面怎么跟php文件连接的详细内容
官方动态 0 0 1412天前
admin
924
前写html或者jsp页面,从来不注意doctype的声明,也不太明白doctype的作用意义。直到最近碰到了一个非常奇葩的bug:某一个页面在IE7和8,Chrome,ff等下正常,但是在IE9下显示有问题。经过一番努力,终于在httpWatch里边找到了答案:DOCTYPE未声明。于是我给页面添加了<!DOCTYPE html>,便奏效了。简言之,<!doctype html>就是html5标准网页声明。如果你的页面添加了<!DOCTYPE html>那么,那么就等同于开启了标准模式,那么浏览器就得老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。这就是<!DOCTYPE html>的作用。以上就是doctype html 什么意思?的详细内容
官方动态 0 0 1412天前
联系站长 友链申请桂ICP备19000949号-1     桂ICP备19000949号-1
您的IP:3.17.23.130,2024-05-04 16:22:55,Processed in 1.49364 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 7.12.9
免责声明
1、本站资源,均来自网络,版权归原作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !
如果觉得本文还不错请点个赞或者打赏点轻币哦~
拒绝伸手党,拿走请回复,尊重楼主,尊重你我他~

侵权删除请致信 E-Mail:207882320@qq.com