文档章节

PHP mvc与缓存

phpweishunlong
 phpweishunlong
发布于 2017/05/15 00:19
字数 686
阅读 6
收藏 0

###1. MVC是什么?

M(Model)模型层,负责数据处理,业务逻辑。

C(Controller)控制器层,负责调度模型、视图。C层是M与V的桥梁。

V(View)视图层,负责显示数据。

MVC优点: 1、 MVC将代码分成了三层,有利于分工 2. 有利于排错

###2. MVC,用户访问的是哪一层?

用户访问的是C层


缓存

原理:先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。

如果缓存中没有要的数据,才去查询数据库,将得到数据先存放到缓存中,然后再返回给php。

优点: 1、 减少了对数据库的读操作,数据库的压力降低 2、 加快了响应速度

缺点: 1、 因为内存断电就清空数据,存放到内存中的数据可能丢失

   2、 缓存中的数据可能与数据库中数据不一致

   3、 内存的成本高 

   4、 内存容量相对硬盘小

缓存分类:

  1. 按照存放的介质分类 a. 内存 b. 硬盘

    存放到内存中的数据,叫做内存缓存 存放到硬盘中的数据,叫做文件缓存

    选择内存缓存还是文件缓存:

    a. 根据你的数据特点来选择。
    
           如果你数据比较小,并且是热门数据(热数据),应该选择内存缓存。
    
           如果你数据比较大,应该选择文件缓存。
    
  2. 按照存放数据来分类

    a. 数据缓存 b. 页面静态化

    数据缓存: 数据缓存只会将从数据库中查询出来的数据缓存 。

    页面静态化: 将动态的页面变成静态的页面。产生的静态页面应该保存到文件中。

MySQL本身性能就相对比较很慢。因为MySQL数据最终存放到硬盘上。 所以MySQL的读(select)写(update insert delete)性能都相对不高。


memcached他是一个软件,通过memcached可以让你操作内存。就是可以将数据存放到内存中,也可以拿出来。

  • 如何看memcached是否启动

    netstat -tlunp | grep 11211

  • 如何登录到memcache中

    //将数据存放到memcached中 set key 1 3 2

    //从memcache中获取数据 get key

  • memcached提供的命令

php要想操作memcache,必须安装扩展

缓存时间肯定不能是永久缓存。 缓存时间如何设置

  1. 缓存时间最好在后台可以修改。

  2. 缓存时间能够设置成一样吗?

    不行,原因: 如果缓存过期了,一起查询数据库,数据库压力大。这种情况叫做缓存雪崩。

    缓存时间最后有一个时间差。

© 著作权归作者所有

共有 人打赏支持
phpweishunlong
粉丝 1
博文 64
码字总数 26288
作品 0
广州
程序员
构架高性能WEB网站的几点知识

前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.htm或者...

吞吞吐吐的
2017/10/11
0
0
Colin/MyClassPHP

#MyClassPHP MyClassPHP是一个开源、免费的学习框架,也被称之为类库包,属于MVC框架成品 官方交流群,提交BUG群 438695935 ##主要更新 ###1.目录不在多样化,而是传统的web结构 ###2.简单M...

Colin
2016/11/04
0
0
phalcon开启metaData缓存

官方文档:https://docs.phalconphp.com/zh/latest/reference/models-metadata.html phalcon的model会非常频繁的使用模型元数据,所以有必要将模型元数据缓存起来: 什么是phalcon的metaDat...

爬墙
2016/11/09
3
0
InitPHP2.1.1 PHP框架,可能是最好的国产PHP框架

下载地址:http://initphp.com 关于InitPHP框架 InitPHP是一款轻量级的php框架,免费下载,免费使用! InitPHP采用了分层体系架构,在MVC模式基础上进行延伸! 详细的API文档和使用Zend stud...

initphp
2012/03/22
0
1
RapPHP 支持 Swoole 的全 Web 开发框架

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.6,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。 Ra...

景颢
09/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
33
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部