处理统一资源文件的cdn地址
浏览:2413次 出处信息
在项目开发中,我们常常会使用到cdn,但是呢,浏览器针对单个域名只能同时发起2个请求,这就造成了空有大量带宽,但是处理时间却还是很长。
为了解决这个问题,常常会对cdn域名建立多个二级域名,来解决浏览器同域名限制2个并发的问题。
这里我使用的ci框架
为了解决这个问题,常常会对cdn域名建立多个二级域名,来解决浏览器同域名限制2个并发的问题。
这里我使用的ci框架
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
//如果未定义站点cdn二级路径名称,则自行定义之
if (!defined('SITE_CDN_NAME')) {
define('SITE_CDN_NAME', 'app');
}
//如果未定义站点cdn域名,则自行定义之
if (!defined('SITE_CDN_DOMAIN')) {
define('SITE_CDN_DOMAIN', '.xs8xs8.cn');
}
/**
* 获取CDN相关资源地址
*/
class cdn{
public function expires($min) {
$expires = $min*60;
header("Pragma: public");
header("Cache-Control: maxage=" . $expires);
header("Expires: " . gmdate("D, d M Y H:i:s", TIMESTAMP + $expires) . " GMT");
}
/**
* 获取资源文件CDN路径
* 例如:
* http://book.xs8.cn/static/js/jquery.js
* 传递参数时需传递jquery.js
* @param string $filename
* @param bool $global 是否获取共用文件
* @return string
*/
public function get_resources($filename, $global = false) {
$path_parts = pathinfo($filename);
$ext = strtolower($path_parts['extension']);
if (in_array($ext, array('js', 'css'))) {
$method = 'get_cdn_' . $ext;
return $this->$method($filename, $global);
} else if (in_array($ext, array('jpg', 'jpeg', 'gif', 'png', 'bmp'))) {
return $this->get_cdn_img($filename, $global);
} else if (in_array($ext, array('swf', 'flv'))) {
return $this->get_cdn_flash($filename, $global);
} else {
return SITE_URL . $path;
}
}
private function get_cdn_pre_config($filename, $global) {
$site_cdn_name = $global == false ? SITE_CDN_NAME : 'www';
$url_pre = sprintf("%u", crc32(md5(strtolower($filename)))) % 4 + 1; //若要生成s1和s2则代码改为:%2+1
return array('site_cdn_name' => $site_cdn_name, 'url_pre' => $url_pre);
}
public function get_cdn_js($filename, $global = false) {
$cdn_config = $this->get_cdn_pre_config($filename, $global);
$url = 'http://s' . $cdn_config['url_pre'] . SITE_CDN_DOMAIN . '/' . $cdn_config['site_cdn_name'] . '/js/' . $filename;
return $url;
}
public function get_cdn_css($filename, $global = false) {
$cdn_config = $this->get_cdn_pre_config($filename, $global);
$url = 'http://s' . $cdn_config['url_pre'] . SITE_CDN_DOMAIN . '/' . $cdn_config['site_cdn_name'] . '/css/' . $filename;
return $url;
}
public function get_cdn_img($filename, $global = false) {
$cdn_config = $this->get_cdn_pre_config($filename, $global);
$url = 'http://s' . $cdn_config['url_pre'] . SITE_CDN_DOMAIN . '/' . $cdn_config['site_cdn_name'] . '/images/' . $filename;
return $url;
}
public function get_cdn_flash($filename, $global = false) {
$cdn_config = $this->get_cdn_pre_config($filename, $global);
$url = 'http://s' . $cdn_config['url_pre'] . SITE_CDN_DOMAIN . '/' . $cdn_config['site_cdn_name'] . '/flash/' . $filename;
return $url;
}
}
建议继续学习:
- 一种常见的并发编程场景的处理 (阅读:22766)
- Rolling cURL: PHP并发最佳实践 (阅读:10564)
- 查看 Apache并发请求数及其TCP连接状态 (阅读:8874)
- 大型高并发高负载网站的系统架构分析 (阅读:7878)
- 大并发下的高性能编程 – 改进的(用户态)自旋锁 (阅读:7312)
- 并发编程系列之一:锁的意义 (阅读:6161)
- 并发框架Disruptor译文 (阅读:5346)
- 学习:一个并发的Cache (阅读:5127)
- C++多进程并发框架 (阅读:4892)
- 当网站使用CDN后获取客户端真实IP的方法 (阅读:4730)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:DNS
后一篇:ubuntu linux 下硬盘坏道的检测与修复 >>
文章信息
- 作者:废墟 来源: 废墟
- 标签: cdn 并发
- 发布时间:2012-01-24 13:51:27
建议继续学习
近3天十大热文
-
[66] find命令的一点注意事项
-
[46] memory prefetch浅析
-
[45] 读书笔记-壹百度:百度十年千倍的29条法则
-
[33] 卡诺模型―设计品质与设计价值的思考
-
[31] 小屏幕移动设备网页设计注意事项
-
[28] Oracle bbed工具的编译
-
[25] 基本排序算法的PHP实现
-
[23] 8大实用又重要Mac使用技巧
-
[22] 杨建:网站加速--Cache为王篇
-
[21] 程序员技术练级攻略