内容简介:php 的小细节
一、switch 执行易忽略的地方
$a=0;
switch($a){
case 1:
echo 44;
break;
case 0:
case 2:
echo 66;
break;
case 3:
echo 88;
break;
default:
echo 77;
}
正常情况下,会执行case为2的部分。
二、引用传递的好处
在函数中,按值传递,其实就是对变量制作一个副本,函数内部对变量的修改不会影响到函数外部。而按引用传递不仅可以在函数内部可以改变变量的值,而且在需要传递数据比较大的场景时,不需要构建一份数据的副本,可以提高性能。
三、浏览器缓存
为了提高web站点的响应速度,浏览器一般有缓存机制。在实际的网页中,一般会对视频和静态资源进行缓存。而作为程序员,了解浏览器缓存机制可以对网站开发起到一定的作用。
1、缓存控制
首先我们可以通过一些请求头对浏览器缓存进行控制。
cache-control: no-store 请求和响应都禁止被缓存must-revalidate 需要进行缓存验证
private:客户端可以缓存
public: 客户端和代理服务器都可缓存
max-age=xxx: 缓存的内容将在 xxx 秒后失效
Cache-Control: no-cache
如下头部定义,此方式下,每次有请求发出时,缓存会将此请求发到服务器(译者注:该请求应该会带有与本地缓存
相关的验证字段),服务器端会验证请求中所描述的缓存是否过期,若未过期(注:实际就是返回304),则缓存才
使用本地缓存副本。
2、缓存验证
用户点击刷新按钮时会开始缓存验证。如果缓存的响应头信息里含有"Cache-control: must-revalidate”的定义,在浏览的过程中也会触发缓存验证。另外,在浏览器偏好设置里设置Advanced->Cache为强制验证缓存也能达到相同的效果。
进行缓存验证是通过last-Modified / if-Modified-Since 和 ETag / If-None-Match 进行的。
一般情况下浏览器第一次进行请求时候,服务器正常响应,返回给浏览器 last-Modified 响应头和响应内容。浏览器第二次进行请求时,会带上if-Modified-Since ,它的值与服务器返回的last-Modified的值一样,服务器接收到这个值以后 会与文件的最后修改时间进行对比,如果文件的最后修改时间大于 if-Modified-Since ,服务器就会返回最新的文件内容,浏览器就不会使用缓存。相反,浏览器就会使用缓存文件,服务器状态码为304。ETag / If-None-Match 的原理与上述是一样的。
参考文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ
以上所述就是小编给大家介绍的《php 的小细节》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
《Unity3D网络游戏实战(第2版)》
罗培羽 / 机械工业出版社 / 2019-1-1 / 89.00元
详解Socket编程,搭建稳健的网络框架;解决网游中常见的卡顿、频繁掉线等问题;探求适宜的实时同步算法。完整的多人对战游戏案例,揭秘登录注册、游戏大厅、战斗系统等模块的实现细节。 想要制作当今热门的网络游戏,特别是开发手机网络游戏,或者想要到游戏公司求职,都需要深入了解网络游戏的开发技术。本书分为三大部分,揭示网络游戏开发的细节。 第一部分“扎基础”(1-5章) 介绍TCP网络游......一起来看看 《《Unity3D网络游戏实战(第2版)》》 这本书的介绍吧!