处理统一资源文件的cdn地址
浏览:2272次 出处信息
在项目开发中,我们常常会使用到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;
}
}
建议继续学习:
- 一种常见的并发编程场景的处理 (阅读:22596)
- Rolling cURL: PHP并发最佳实践 (阅读:10307)
- 查看 Apache并发请求数及其TCP连接状态 (阅读:8443)
- 大型高并发高负载网站的系统架构分析 (阅读:7715)
- 大并发下的高性能编程 – 改进的(用户态)自旋锁 (阅读:7149)
- 并发编程系列之一:锁的意义 (阅读:5873)
- 并发框架Disruptor译文 (阅读:5081)
- 学习:一个并发的Cache (阅读:4968)
- C++多进程并发框架 (阅读:4748)
- 当网站使用CDN后获取客户端真实IP的方法 (阅读:4586)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:DNS
后一篇:ubuntu linux 下硬盘坏道的检测与修复 >>
文章信息
- 作者:废墟 来源: 废墟
- 标签: cdn 并发
- 发布时间:2012-01-24 13:51:27
建议继续学习
近3天十大热文
- [65] Oracle MTS模式下 进程地址与会话信
- [65] Go Reflect 性能
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则