opencart 能承受大流量网站解决访问量访问吗

本帖子已过去太久远了,不再提供回复功能。当一个网站发展为知名网站的时候(如新浪,腾讯,网易,雅虎),网站的访问量通常都会非常大,如果使用虚拟主机的话,网站就会因为访问量过大而引起服务器性能问题,这是很多人的烦恼,有人使用取消RSS等错误的方法来解决问题,显然是下错药,那么对于大流量的网站,需要采用什么样的方法来解决访问量问题? 解决方法参考如下:
首先,确认服务器硬件是否足够支持当前的流量。
普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,那么必须首先配置一台更高性能的专用服务器才能解决问题,否则怎么优化都不可能彻底解决性能问题。
其次,优化数据库访问。
服务器的负载过大,一个重要的原因是CPU负荷过大,降低服务器CPU的负荷,才能够有效打破瓶颈。而使用静态页面可以使得CPU的负荷最小化。前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,静态化往往不能满足某些功能。
缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。
如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大量SQL查询。
第三,禁止外部的盗链。
外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。
第四,控制大文件的下载。
大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。目前有不少免费的Web 2.0网站提供图片分享和文件分享功能,因此可以尽量将图片和文件上传到这些分享网站。
第五,使用不同主机分流主要流量
将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。
第六,使用流量分析统计软件
在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。推荐使用的流量分析统计软件是Google Analytics(Google分析)。这个软件非常的不错哦!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:184325次
积分:2420
积分:2420
排名:第14570名
原创:13篇
转载:311篇
(4)(9)(8)(4)(3)(8)(4)(8)(11)(4)(8)(3)(3)(5)(2)(4)(1)(3)(8)(19)(7)(5)(2)(1)(2)(6)(2)(2)(2)(3)(17)(13)(9)(7)(9)(2)(1)(2)(7)(3)(2)(8)(5)(6)(11)(11)(1)(8)(4)(9)(13)(7)(5)(5)(4)(1)(5)opencart2(4)
发现opencart2的数据访问太原生态了,代码冗余,可读性差,准备把codeigniter3的数据访问类集成进来,总共4个步骤:
1. 拷贝codeigniter的system/database整个目录到opencart2的system/library下
2. 新建一个文件opencart2的system/library/db_ci.php
define('BASEPATH', dirname(__FILE__).'/../../system/library/');
define('EXT', '.php');
class DB_CI {
private static $
public static function get_instance($db_driver, $db_host, $db_username, $db_password, $db_name, $db_prefix) {
if(self::$instance == null) {
require_once(BASEPATH . 'database/DB' . EXT);
$params = array(
'dbdriver' =& $db_driver,
'hostname' =& $db_host,
'username' =& $db_username,
'password' =& $db_password,
'database' =& $db_name,
'dbprefix' =& $db_prefix,
'pconnect' =& FALSE,
'db_debug' =& FALSE,
'cache_on' =& FALSE,
'char_set' =& 'utf8',
'dbcollat' =& 'utf8_general_ci',
self::$instance = DB($params,TRUE);
return self::$
3. index.php文件,在 $registry-&set('db', $db); 之后添加下面2行(为了和原生的$db区分开,我这里使用的$db_ci)
// 集成codeigniter的数据访问
$db_ci = DB_CI::get_instance(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PREFIX);
$registry-&set('db_ci', $db_ci);
4. 加入codeigniter的系统错误输出函数,新建system/helper/general.php
* 集成codeigniter的数据访问类,数据库错误显示,需要用到该函数
function log_message($level = 'error', $message, $php_error = FALSE)
echo($message);
$handle = fopen(DIR_LOGS . 'error_sql.log', 'a');
fwrite($handle, date('Y-m-d G:i:s') . ' - ' . print_r($message, true) . &\n&);
fclose($handle);
完毕,所有要使用的地方,就用$this-&db_ci-&
比如插入数据:
$this-&db_ci-&insert('表名', $data);
$last_id = $this-&db_ci-&insert_id();其他方法请自行查看codeigniter的数据访问手册。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12974次
排名:千里之外
原创:17篇
(3)(1)(2)(4)(7)(2)(1)}

我要回帖

更多关于 淘宝自主访问流量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信