PHP输出缓冲及其应用

缓冲(buffer)是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术,用来存放缓冲数据的区域叫缓冲区,在计算机科学领域,当数据从一个地方传送到另一个地方时,缓冲区被用来临时存储数据。与缓冲相似的一个技术是缓存(cache),它们都是为了解决数据存储和传输速度不同而带来的问题,不同的是,缓冲主要在写时使用,而缓存主要用来在读时使用。

PHP缓冲

如上图,是一个简易的缓冲区模拟图,左端入口的数据具有单个输入体积小,速度快,数量多,但右端输出数据具有体积大,速度慢的特点。如果没有缓冲区,很容易造成数据堵塞,有了缓冲区之后,当数据填满缓冲区,再统一输出,则可以大大减少系统负担。 …阅读更多>>

HTML5中defer和async的比较

在网站页面中,通常需要引入外部js资源,然而外部的js资源可能导致DOM阻塞,影响页面加载速度。通过异步或者延迟执行js,可以做到引用外部js资源而不阻塞DOM的目的。用法是直接在script标签中使用defer和async,那么它们两个有什么区别呢?

从字面上来理解,defer是延迟,而async则是异步(Asynchronous)。w3c上这样解释defer和async:defer属性是一个布尔值的属性,当存在这个属性时,它指定的脚本将在页面解析之后执行1; async也是一个布尔值的属性,当存在这个属性时, 只要脚本是可用的它将异步执行2。更详细的可见火狐开发者中心对script标签的讲解…阅读更多>>

博客的响应式主题上线了

移动设备的普及越来越广,传统的网站需要不断进步来适应各种设备的浏览需求,这不仅仅对用户友好,搜索引擎评价一个网站的优劣也会逐渐加入网站是否支持移动设备浏览的指标(谷歌已经在行动,大部分不支持移动网站浏览的站长都在谷歌管理员工具里接收到了相应邮件)。

本站采用自制wordpress主题,原来不支持响应式,新主题在原来的基础上增加了其它设备的支持,也做了一些优化,抛弃了requirejs和jQuery,使用了原生JS,加快网站展示速度。新主题使用了较多HTML5和CSS3的技术,不再支持IE9以下的浏览器。新主题还有很多地方没有完善,将在以后一步一步改进,需要的也可以联系我获取主题代码。

响应式网站建设中的像素和宽度问题

在《图像和展示》一文中,我们提到了现在各种移动设备可能会拥有比PC更高的分辨率,例如iPhone 6S的分辨率为1920 x 1080,屏幕尺寸只有5.5英寸,而MacBook Pro Renta的分辨率为2560 x 1600,屏幕尺寸为13.3英寸。按照上一片文章的理解,当我们建设一个980px宽的网站时,在iPhone等这些高分辨率,小尺寸的设备上岂不是会显示得非常小?我们知道,实际的展示的样式并不是这样,但这其中是什么样的原理呢?本文试图一探究竟。

说到这个问题,不得不说说高清屏的发展,在智能手机刚刚被研发出来时候,是没有高清屏的,例如iPhone3的分辨率是320 x 480,而iPhone4的分辨率则为640 x 960。按照理解,一个320像素宽的网站,在iphone4上将缩小一半,这样很多网站将不兼容iPhone4。显然苹果是聪明的,为了保持和旧版iPhone的兼容性,当CSS指定宽度为320px时,网站依旧铺满全屏,用两个像素点渲染一个CSS像素。这里涉及到了两个概念,一个是CSS像素,一个是devicePixelRatio. …阅读更多>>

图像与展示

最近学习移动网站建设,遇到了很多关于图片设计与跨设备展示方面的问题。首先第一个问题,就是分辨率(resolution)这个概念,让人很头疼,有时候,它用来形容显示器,有时候又用来描述图片,有时候用来描述像素多少,有时候又用来描述清晰度。查了一下相关资料,进行如下总结:

分辨率用来形容屏幕的时候,指的一块显示屏的横向和纵向的像素数量。如一块1440×900的显示器,它横向有1440个像素点,纵向有900个像素点,整个显示器可以表示1,296,000个像素。不同的显示器分辨率尺寸各不一样,我们可以用每英寸上含有的像素点数(DPI)来表示一块显示器的清晰度,通常情况下,普通PC的DPI为96,随着科技的发展,越来越多的高清屏幕出现在我们的生活中,例如MacBook可达227DPI,常见设备的DPI如下1: …阅读更多>>