Month: 11月 2020

html table表格固定头部(thead)效果

<html lang="zh-CN" class=""><head>
     

    <meta charset="UTF-8">
    <title>CodePen Demo</title>
     
    <style>
  .table-container {
    width: 50%;
    height: 200px;
    border: solid 1px #cccccc;
    margin: 10px auto;
    background: #FFF;
    -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    position: absolute;
    top: 50%;
    left: 50%;
    padding-top: 50px;
    overflow: hidden;
  }
  
  
        

用window.performance.navigation.type判断网页 来源类型

performance.navigation.type(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):
0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATE。
1:网页通过“重新加载”按钮或者location.reload()方法加载,相当于常数performance.navigation.TYPE_RELOAD。
2:网页通过“前进”或“后退”按钮加载,相当于常数performance.navigation.TYPE_BACK_FORWARD。
255:任何其他来源的加载,相当于常数performance.navigation.TYPE_RESERVED。
performance.navigation.redirectCount:表示网页经过重定向的次数。

6张图让你搞懂浏览器渲染网页过程

最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。

github 地址:https://github.com/qq44924588...

我的想法:如果我要构建快速可靠的网站,需要真正了解浏览器渲染网页的每个步骤机制,这样就可以在开发过程中对每个步骤进行优化。 这篇文章是我在较高水平上对端到端过程的学习总结。

好了,废话不多说,我们开始吧。这个过程可以分为以下几个主要阶段:…

            

使用Nginx永久缓存上游Web资产(proxy cache)

我将描述使Nginx永久(或至少一年)缓存图像所需要做的一切。

在开始之前,您应该了解一件事:我在此处指出的所有内容均已记录在Nginx的官方缓存指南中,但是我很懒,没有读过它,我希望我能为您节省一些你宝贵的时间

如果您已经在生产中运行Nginx并拥有一定流量,您可能会根据处理请求所需的时间来猜测响应是来自上游服务器而不是来自Nginx缓存的,如果它很慢,那么我们知道作为一个MISS; 另一方面,如果Nginx在缓存中找到响应并进行响应,则为HIT

为了避免任何猜测,最好让Nginx告诉您何时命中或未命中缓存请求,我们通过为HTTP标头提供缓存状态的状态来做到这一点。您可以选择任何想要的名称,X-Cache-Status就像官方指南建议的那样,我喜欢:

location / {
  # . . . 
  add_header X-Cache-Status $upstream_cache_status;
  # . . .
}

现在,我们可以向服务器发出请求,并查看每个特定请求的缓存实际发生了什么:

$ curl -v localhost:8080
. . . 
>
< HTTP/1.1 
        

程序员都应该知道的URI,一文帮你全面了解

URI 是每个程序员都应该了解的概念,同时相关联的还有 URL, URN 等概念簇。了解这些概念,可以帮助我们更好地窥探万维网(WWW)的设计,同时也能帮我们在工作中有效解决跟 URI 相关概念的问题,更加理解 encode,decode 工作原理,更好地助力网络编程!

1.URI

URI(Uniform Resource Identifier) ,意为统一资源标识符,提供了一套简单可扩展的方式对资源进行标识。…

PHP8.0 JIT介绍,及如何在PHP 8中设置JIT

PHP 8在PHP的内核中添加了JIT(即时编译)编译器,可以极大地提高性能。

解释程序语言没有编译步骤,可以直接在虚拟机中执行代码。实际上,包括PHP在内的大多数解释型语言都有一个轻量级的编译步骤来提高其性能。

另一方面,使用Ahead-Of-Time(AOT)编译进行编程的语言要求在运行代码之前首先对其进行编译。

即时编译是解释器和提前编译的混合模型,部分或全部代码通常在运行时进行编译,而无需开发人员手动进行编译。

PHP历史上是一种解释语言,所有代码都是由虚拟机(Zend VM)解释的。通过引入由PHP代码生成的Opcache和Opcodes,可以对此进行更改,并且可以将其缓存在内存中。PHP 7.0添加了AST(抽象语法树)的概念,该概念进一步将解析器与编译器分离。

PHP的JIT内部使用LuaJIT的DynASM,并作为Opcache的一部分实现。

深入
了解JIT有关最佳JIT配置,基准以及JIT如何工作的详细指南

Opcache可以检查使用的代码(通常称为热代码),并将它们的编译版本存储在共享的Opcache内存中。什么时候应该编译代码,什么时候应该编译代码是可配置的。

平台支持

当前在运行在x86和x64处理器指令集上的Linux和Windows系统上启用了JIT。当前不支持Apple M1和ARM CPU。

DynASM是PHP JIT中使用的编译器,它也支持ARM指令,但是尚不清楚PHP JIT是否可以在ARM处理器上运行。

如果CPU支持JIT,则JIT也可以使用AVX。2011年及以后的大多数消费者和服务器级处理器都支持AVX指令。cat /proc/cpuinfo | grep

            

如何安装与升级到 PHP 8.0 (Debian/Ubuntu)

PHP 8.0 带来了一些新功能,并在性能,语法,安全性和稳定性方面进行了改进。借助目前所有受支持的Debian和Ubuntu版本中可用的预编译软件包,可以轻松地在几乎任何类型的服务器/开发设置上安装PHP 8.0。

目前尚无PHP 8.0的普遍可用版本。尽管PHP 8.0当前处于功能冻结状态,但有可能在2020年11月发布更稳定的版本之前进行许多更改。对于生产系统,请等待正式的稳定版本。

最后更新于 2020年11月6日 …