php 的小细节

栏目: PHP · 发布时间: 6年前

内容简介: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 的小细节》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python网络编程(第3版)

Python网络编程(第3版)

[美] Brandon Rhodes、[美] John Goerzen / 诸豪文 / 人民邮电出版社 / 2016-9 / 79.00元

本书针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序等经典话题。具体内容包括:全面介绍Python3中最新提供的SSL支持,异步I/O循环的编写,用Flask框架在Python代码中配置URL,跨站脚本以及跨站请求伪造攻击网站的原理及保护方法,等等。一起来看看 《Python网络编程(第3版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试