JavaScript代码分享: 动态载入CSS, 或JavaScript 脚本文件
玩玩动态载入吧, 记得 jQuery 里有个方法 jQuery.getScript(); 这个后面好像还带一个回调函数, 功能是很好, 很强大. 不过载入CSS的时候就没有提供类似的方法. 自己写了两个函数. 玩玩很有意思呢.
不过注意的是玩动态载入的话, 前提是你的网络带宽和服务器速度都不错, 如果网络太烂, 页面就乱糟糟了呢.
先来载入CSS的函数:
/** * 动态增加 CSS 样式表文件. 不会重复加载 * 但在别处使用这个函数,这个js要先加载 * * @param: string cssUri 载入的 CSS 样式表定义脚本路径. * * @author: Cai.Aimin * @email: cam_work@163.com * @since: 2008-03-05 * * @return void */ function loadCss(cssUri) { if(!cssUri) return; var styles = document.getElementsByTagName("link"); var len = styles.length; var isLoaded = false; for(var i=0; i < len; i++) { if(cssUri == styles[i].getAttribute("href")) { isLoaded = true; break; } } if(!isLoaded) { var headObj = document.getElementsByTagName("head")[0]; var cssLink = document.createElement("link"); cssLink.setAttribute("rel", "stylesheet"); cssLink.setAttribute("type", "text/css"); cssLink.setAttribute("media", "screen"); cssLink.setAttribute("href", cssUri); headObj.appendChild(cssLink); } }
面这个是动态载入JavaScript脚本函数, 对js脚本载入前, 检查到已有的话就进行删除, 不然的话对新AJAX Loaded 进来的内容不能完成绑定操作. 当然重复载入浏览器是很懒的. 它会读取本地的缓存, 所以不需要担心重复读取服务器上的一段js脚本.
/** * 动态增加 JavaScript 脚本文件. * 但在别处使用这个函数,这个js要先加载 * * @param: string jsUri 载入的 JavaScript 脚本路径. * * @author: Cai.Aimin * @email: cam_work@163.com * @since: 2008-03-05 * * @return void */ function loadJs(jsUri) { if(!jsUri) return; var js = document.getElementsByTagName("script"); var len = js.length; for(var i=0; i < len; i++) { if(jsUri == js[i].getAttribute("src")) { js[i].parentNode.removeChild(js[i]); break; } var headObj = document.getElementsByTagName("head")[0]; var jsLink = document.createElement("script"); jsLink.setAttribute("type", "text/javascript"); jsLink.setAttribute("src", jsUri); headObj.appendChild(jsLink); } }
JavaScript代码分享. window.onload()
虽然使用 jQuery 可以非常方便的操作 DOM 树, 自己写一些代码辅助也是非常有意思的事. 也很有必要哦. 分享一下文档载入时的这个window.onload事件处理方法. 让它支持多事件.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /** * 这个函数可以代替window.onload = function() {} * 可以不受 window.onload 只能在一处使用的限制 * 但在别处使用这个函数,这个js要先加载 * * @author: Cai.Aimin * @email: cam_work@163.com * @since: 2008-03-04 * @return void */ function addLoadEvent(func) { var oldOnload = window.onload; if( typeof window.onload != 'function' ) { window.onload = func; } else { window.onload = function() { oldOnload(); func(); } } } |
还是换 iNove 主题吧.
WP 现在真的是比较傻瓜化了. 虽然傻瓜化的配置页面显示效率不怎么样. 不过的确是比较方便. 还是能忍受的.
昨天晚上给换上 iNove 主题, 已经更新到 1.4.5 版本了. 看看还不错. 就用它了.
不过先前使用的代码高亮插件是 WP-codebox 和现在用到 WP-Syntax 冲突. 必须卸载 codebox 插件了.
只是 wp-Syntax 不能设置默认显示行号. 郁闷! 先不管了.
Good day!
安装 libmemcached, memcache_functions_mysql
我们到目标是 mysql 同步更新 memcache 服务器. 为此我们给它装上必要到软件. 现在要安装的是 libmemcache 和 memcache_functions_mysql 两个软件包. 下载地址为:
libmemcached: http://download.tangent.org/libmemcached-0.30.tar.gz
memcache_functions_mysql: http://download.tangent.org/memcached_functions_mysql-0.8.tar.gz
安装libmemcached需要装机器上已经安装 memcache, 这个前面已经有介绍. 这里不再说明.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | wget http://download.tangent.org/libmemcached-0.30.tar.gz wget http://download.tangent.org/memcached_functions_mysql-0.8.tar.gz tar -zxf libmemcached-0.30.tar.gz tar -zxf memcached_functions_mysql-0.8.tar.gz cd libmemcached-0.30 ./configure make sudo make install sudo ln -s /usr/local/lib/libmemcached.so.2 /usr/lib/ cd ../memcached_functions_mysql-0.8 ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/ make sudo make install /usr/local/mysql/bin/mysql -u root -p |
说明一下. libmemcached 安装后要装 /usr/lib 里建一个链接, 不然 memcache_functions_mysql 包编译不过. 它会提示 找不到 libmemcached.
如果编译安装的 mysql 装编译 memcache_functions_mysql 包时 使用参数 --libdir=/usr/local/mysql/lib/mysql/ 假设 mysql 安装在 /usr/local/mysql 目录. 这里使用的是直接下载编译好的二进制包.
到此, 安装OK!
安装 Memcache 服务器.
服务器初始化环境: Ubuntu-8.04.2 base-system + 编译环境.
载 memcache 和 libevent 包. Memcache用到了libevent这个库用于Socket的处理.
1 2 3 4 5 6 7 8 9 10 11 12 | wget http://www.monkey.org/~provos/libevent-1.3.tar.gz wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz tar -zxf libevent-1.3.tar.gz tar -zxf memcached-1.2.8.tar.gz cd libevent-1.3 ./configure --prefix=/usr make sudo make install cd ../memcached-1.2.8 ./configure --with-libevent=/usr make sudo make install |
安装后 memcached 会这 /usr/local/bin/目录下. 启动Memcache的服务器端:
sudo /usr/local/bin/memcached -d -m 64 -u root -l 192.168.1.232 -p 12001 -c 32 -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u 是运行Memcache的用户,我这里是root,
-l 是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p 是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P 是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
结束Memcache进程,执行:
sudo kill `cat /tmp/memcached.pid`
可以启动多个守护进程, 端口不能一样.
现在用PHP脚本测试一下. 测试服务器是 192.168.1.230
1 2 3 4 5 6 7 8 9 10 | /** * memTest.php * Memcache 服务器测试脚本 */ //phpinfo(); $mem = new Memcache(); $mem->addServer('192.168.1.232', 12001); $mem->set('mmKey', 'Hello, Baby!'); var_dump($mem->get('mmKey')); |
http://localhost/memTest.php 可以看到输出了
string(12) "Hello, Baby!"
Memcache 服务器安装配置完毕.