基于JSON的高级AJAX开发技术

一、 引言

  毫无疑问,AJAX已经成为当今Web开发中一种强有力的用户交互技术,但是它的许多可能性应用仍然鲜为人知。在本文中,我们将来共同探讨如何使用JavaScript对象标志(JSON)和JSON分析器在服务器和客户端AJAX引擎之间创建复杂而强有力的JSON数据传输层。我们将详细讨论如何创建一组对象(在其它语言中经常被当作一个包),如何把这些对象串行化为JSON以发送到服务器端,以及如何把服务器端JSON反串行化为客户端JavaScript对象。

  提示:你可以在Douglas Crockford的网站上找到本文中使用的JSON分析器。

  在继续阅读前,本文假定你已经掌握了JavaScript技术并且了解如何创建一个基本的AJAX引擎,并经由AJAX技术向服务器端发出请求和从服务器端接收响应。为了更好地理解本文中示例,你需要下载本文相应的源码文件。 (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , , , ,

各种浏览器的userAgent


而IE各个版本典型的userAgent如下:
/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
其中,版本号是MSIE之后的数字。

Firefox几个版本的userAgent大致如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12  其中,版本号是Firefox之后的数字。
Opera
Opera典型的userAgent如下:
Opera/9.27 (Windows NT 5.2; U; zh-cn)
Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0
其中,版本号是靠近Opera的数字。
Safari
Safari典型的userAgent如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
其版本号是Version之后的数字。
Chrome
Chrome的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
其中,版本号在Chrome之后的数字。
Navigator
目前,Navigator的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6
其中,版本号在Navigator之后的数字。

标签Tags:, , , , , , , ,

nginx的rewrite规则

正则表达式匹配,其中:

* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:

* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
flag标记有:

* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
一些可用的全局变量有,可以用做条件判断(待补全) (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , , , ,

《高性能网站建设指南》读书笔记

规则1,减少HTTP请求

这是最重要的原则,如果14条规则里只能选一条,那就是它了。可以通过多种方法减少HTTP请求,例如合并图片,合并JS和CSS等等。这一点薄荷网有很多改进的余地,首先应该把现在的JS合并了。

规则2,使用内容发布网络

内容发布网络就是CDN了,但是CDN似乎挺贵的,目前还不适合薄荷网,不过可以考虑自己弄一个网通的静态资源服务器解决有中国特色的可恶的南北互通问题。

规则3,添加Expires头

这个没什么好说的,是个建网站的人都应该知道。目前薄荷网图片,,js,flash过期时间设置了3年,可以说是永久了,:) Expires有个麻烦的地方是内容更新问题,Ruby on Rails这方面处理的非常棒,它是在文件名后面自动带了

资源文件的timestamp,完美解决。 (更多…)

标签Tags:, , , , , , , , , , , , , , , , , , , , ,

搞笑漫画图解几大浏览器的区别

nternet Explorer, , Chrome, Opera 和 Safari之间的到底有啥区别,下面这几幅搞笑漫画或许能说明什么

Internet Explorer:没什么用,偶尔还真能派上用场

Firefox:坦白地说它面面俱到,但那些傻了吧唧的插件快把它搞的没法用了

Safari:非常的高效,但那些使用Safari的人总对其质量夸大其词

Chrome:就是一个快字

Opera:有些人非常喜欢,但大多数人认为Opera很2

标签Tags:, , , , , , ,

用户IP、浏览器、操作系统

<?
$os=$_["HTTP_USER_AGENT"]; // 浏览者操作系统及浏览器

//分析浏览器
if(strpos($os,"NetCaptor")) $explorer="NetCaptor";
elseif(strpos($os,"Opera")) $explorer="Opera";
elseif(strpos($os,"")) $explorer="";
elseif(strpos($os,"MSIE 6")) $explorer="MSIE 6.x";
elseif(strpos($os,"MSIE 5")) $explorer="MSIE 5.x";
elseif(strpos($os,"MSIE 4")) $explorer="MSIE 4.x";
elseif(strpos($os,"Netscape")) $explorer="Netscape";
else $explorer="Other";


// 分析操作系统
if(strpos($os,"Windows NT 5.0")) $os="Windows 2000";
elseif(strpos($os,"Windows NT 5.1")) $os="Windows XP";
elseif(strpos($os,"Windows NT 5.2")) $os="Windows 2003";
elseif(strpos($os,"Windows NT")) $os="Windows NT";
elseif(strpos($os,"Windows 9")) $os="Windows 98";
elseif(strpos($os,"unix")) $os="Unix";
elseif(strpos($os,"linux")) $os="Linux";
elseif(strpos($os,"SunOS")) $os="SunOS";
elseif(strpos($os,"BSD")) $os="FreeBSD";
elseif(strpos($os,"Mac")) $os="Mac";
else $os="Other";

//ip
unset($ip);
if($_SERVER['HTTP_CLIENT_IP']){
$ip=$_SERVER['HTTP_CLIENT_IP'];
} else if($_SERVER['HTTP_X_FORWARDED_FOR']){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} else{
$ip=$_SERVER['REMOTE_ADDR'];
}

//显示浏览者信息
echo "IP地址:".$ip."<br>";
echo ":".$os."<br>";
echo ":".$explorer."<br>";
?>

标签Tags:, , , , ,

用CSS构建iframe效果

很实用也很全面的教程,转来和大家分享.

iframe应用很普遍,通常的需求有两种:

1,获取iframe效果,就是带一个滚动条,可以省不少版面。
2,要嵌一个页面,实现框架链接。

如果不方便使用iframe,可以有如下解决方案:

第一种需求如果我们使用css布局来实现,即可以少一个页面,也可以提高效率。
第二种需求可以采用xmlhttp远程获取。 (更多…)

标签Tags:, , , ,

关于SWF插在网页中的问题

符合WEB标准的代码(适用较小的文件)

<object type="application/x-shockwave-" data="." width="550" height="400"><param name="movie" value="flash." /></object>

背景透明
参数:wmode 值:transparent

防止POPMENU被FLASH盖掉
参数:wmode 值:opaque

标签Tags:, ,

用PHP控制您的浏览器cache

Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 代码的数据块有作用。

我们先举一个简单的例子,让大家对Output Control有一个大致的印象:
Example 1.

<?php
ob_start(); //打开缓冲区
echo \"Hellon\"; //输出
header(“location:index.php”); //把浏览器重定向到index.php
ob_end_flush();//输出全部内容到浏览器
?>

所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错。如果我们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:“Header had all ready send by”!但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

(更多…)

标签Tags:, , ,