又拍云php
A. FastAdmin框架是什么
FastAdmin是一款基于Thinkphp5+Bootstrap的极速后台开发框架。
它的主要特性如下:
基于Auth验证的权限管理系统
支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及权限设置
支持单管理员多角色
支持管理子级数据或个人数据
强大的一键生成功能
一键生成CRUD,包括控制器、模型、视图、JS、语言包、菜单、回收站等
一键压缩打包JS和CSS文件,一键CDN静态资源部署
一键生成控制器菜单和规则
一键生成API接口文档
完善的前端功能组件开发
基于AdminLTE二次开发
基于Bootstrap开发,自适应手机、平板、PC
基于RequireJS进行JS模块管理,按需加载
基于Less进行样式开发
基于Bower进行前端组件包管理
强大的插件扩展功能,在线安装卸载升级插件
通用的会员模块和API模块
共用同一账号体系的Web端会员中心权限验证和API接口会员权限验证
二级域名部署支持,同时域名支持绑定到插件
多语言支持,服务端及客户端支持
强大的第三方模块支持(CMS、博客、知识付费问答、在线投票系统、在线客服、移动端商城)
支持CMS、博客、知识付费问答无缝整合Xunsearch全文搜索
第三方小程序支持(预订小程序、问答小程序、活动报名小程序、商城小程序、博客小程序)
整合第三方短信接口(阿里云、腾讯云短信)
无缝整合第三方云存储(七牛、阿里云OSS、又拍云)功能
第三方富文本编辑器支持(Summernote、Kindeditor、网络编辑器)
第三方登录(QQ、微信、微博)整合
第三方支付(微信、支付宝)无缝整合,微信支持PC端扫码支付
丰富的插件应用市场
B. 通过url地址改变图片大小
很简单
你就是想通过url来改变同一张图片的大小
假如图片:章001.png;初始像素10*10px;
章001.png;初始像素10*10px;
章002.png;初始像素20*20px;
章003.png;初始像素30*30px;
多创建几个像素不同内容
相同的图片
就可以来
地址/!/both/长x宽使用这种地址请求根据你使用什么框架来决定的
spring
mvc就可以实现
地址/!/both/长x宽/(restful风格)
C. 如何解决百度云加速缓存
一、动静均缓存
网络云加速更新后取消了简单的勾选配置,其实对于我们来说真的说是福利了,作为首批先锋测试团成员,下面我就简单给大家设置一下!很多朋友解析到网络云加速后就放一边了,结果速度依然蜗牛,没有感受到飞的快感,那么今天我就要带大家一起挖掘一下网络云加速真正隐藏属性。
其实,新版网络云加速需要自己自定义规则来开启缓存!下面简单分享下动态网站在网络云加速下开启高速缓存的自定义规则,如图点击可进入设置
同样的,根据前面的黑白名单规则,我们先定个调,一般网站应该是这样的情况:前台都缓存、后台不缓存、个别页面要缓存或不缓存。
先看下网络云加速自定义规则的说明:
提示说明:
规则自定义指对“指定URL”进行页面级规则定制(支持通配符*)。可对任意子域名、目录、甚至单个URL进行针对性的加速缓存、安全防护等配置。列表中上下关系决定优先级,靠上规则优先级高。站长可以通过点击“↑”调整优先级。新增规则优先级最低,将于30s内生效。
URL指定支持通配符*,例如
1) 对img.xiangta.cc进行特定设置,需增加URL: img.xiangta.cc/*
2) 对xiangta.cc/news/ 进行特定设置,需增加URL: xiangta.cc/news/*
3) 对xiangta.cc所有html页面进行特定设置,需增加URL: xiangta.cc/*.html
支持通配,这就简单了!不过免费版只支持3条规则,这个就需要你们合理斟酌一下了,不要看我可以设置10条,我是网络云加速测试者,永久享用10条顶级以及很多功能。
优先级从上往下依次降低,所以我们要保证不缓存的规则写到最上面,才能不会缓存规则覆盖。
根据我个人经验,一般网站设置如下3条规则即可:
①、网站后台:xiangta.cc/admin/* 设置为不缓存或细致缓存
②、前端分页:xiangta.cc/?page=* 设置为不缓存或细致缓存
③、网站前台:*xiangta.cc* 设置为前后通配都缓存,缓存一般为1天或者12小时,20小时,根据自己更新速度设置缓存
Ps:细致缓存其实就是只缓存静态文件,其中缓存时间或有效期请自行设定即可,无需按图照办。另外由于新版网络云加速现在不能对单个域名设置了,所以最后的缓存规则是前后通配,保证某些网站的二级静态域名也缓存到位。另外,这只是我个人经验推荐的配置,比如评论分页就可以根据自己的需要设置为其他页面,此处分享仅供参考!
这样设置好了之后,网站前台刷几下就可以看到效果了,当然还可以F12到network里面去看header的缓存命中情况,这就不赘述了。注意本人网站是动态网站。
二、只缓存静态
动静都缓存可以解决国内低配VPS的2个尴尬:带宽和负载。带宽问题,国内普遍小水管就不用我多说了吧。负载问题则是动态网站一直以来的诟病,刷新快一点,CPU就满了。
但是,有一些网站,本地已有缓存或者访问流量并不高,他们不想开启全站缓存,因为会带来的各种数据不刷新问题。因此,我们如何既解决速度问题,又兼顾实时数据呢?
当然,开启CDN不进行整站缓存设置的话,大部分CDN会默认缓存静态文件,基本满足以上需求。但是某些CDN有个坑爹的规则:他会和谐某些关键词,访问有这些关键词的页面就提示违规并不显示。
如何解决这个问题?很简单,通过域名做动静分离即可。
将静态链接替换为二级域名,并开启CDN缓存。主域名则不走CDN或走CDN但不开启缓存。
将静态链接替换为二级域名应该不用我多说了吧?
可当然我个人网站的文件都是分离的。
主域名不走CDN也很简单,直接在解析时不开启缓存即可,也就是直接回源:
如果担心暴露IP,如果是阿里云ECS,你还可以CNAME到阿里云的WAF上:
走CDN开启缓存和走CDN禁止缓存应该也不用我多说了,上文都有分享规则。
如上设置后,你的网站的速度也会很快,当然前提是你的动态部分不卡才行。如果网站还是比较卡,但是你有不想开启纯静态导致数据不刷新,那么
①、如果是独立主机,可以考虑开启redis或opcache等php动态缓存
②、如果是虚拟主机,可以安装 DB Cache Reloaded Fix这类数据缓存插件
当然,如果你觉得还是不够快,那么心系与她一样,开启Nginx的fastcgi缓存!
在这里我推荐一下文件分流存储服务商,又拍云价格便宜而且效果很明显,节点我就不多说了,自己ping一下就知道了,配合着网络云加速,分分钟让你网站秒杀市面上20M带宽的VPS。
三、总结下区别
方案一 和 方案二 到底有什么区别呢?
方案一:是将动态和静态都强制缓存到CDN,这样就算本地不开启任何缓存,用户的访问速度也是杠杠的。如果想要给搜索引擎蜘蛛一样的速度,那么本地最好也开启一下静态缓存。
方案二:则是只缓存静态数据,动态数据依然请求到源服务器。这样做的好处是既解决了带宽尴尬,又解决了前台数据不能实时刷新的问题。因为占带宽的主要是静态文件,而非html代码。我们将大体积的静态文件托管到CDN加速,源服务器就只要负担体积很小的html代码流量了,速度自然就快了,如果觉得还是不够快那你就选择配合使用分布储存
D. thinkphp怎么用又拍云上传文件
thinkphp内置又拍云上传引擎的,修改配置文件就可以
'FILE_UPLOAD_TYPE'=>'ftp',
'UPLOAD_TYPE_CONFIG'=>array(
'host'=>'',//又拍云服务器
'username'=>'',//又拍云用户
'password'=>'',//又拍云密码
'bucket'=>'',//空间名称
'timeout'=>90,//超时时间
),
E. Wordpress插件过多很臃肿,怎么优化
缓存就指很多方便了,比如CDN缓存、静态缓存、数据库缓存、浏览器缓存等等。
1、CDN缓存:CDN的话最好是备案了再起飞,因为大多数没备案的CDN都是给美国节点,而很多人是香港服务器,那岂不是绕着太平洋跑?另外,CDN需要正确的配置(写缓存规则)才能够达到最好的效果。
2、静态数据库缓存:这个呢就不做推荐了,各有各的优点,自己比较效果吧。
3、浏览器缓存:这里呢说一下,如果长期更新浏览器缓存不要搞太久,很多人在网络云加速设置个一年什么的。ServiceWorker的话可以试试,离线打开是不是很装逼呢
精简是重要的
很多优秀的主题包含了很多不必要的功能,这时候就需要适当的精简,毕竟只有骨骼轻才可以飞。
插件的话能用纯代码就用纯代码,插件什么的卡死了。
一些CSS/JS文件要适当的压缩合并,减少请求数,因为在HTTP/1.1中每个文件都要握手。
Gzip的话是有必要开的,大家也知道打包文件更小吧。
HTTP/2压缩了请求头,而且合并了请求,也就是说全站两个域名只需两次请求。
SPDY的话是谷歌的一个项目,本身是为了加快HTTP,不过现在的HTTP/2已经包含了其大部分功能,谷歌也要放弃该项目了
支持HTTP/2的CDN有CloudFlare、腾讯云、又拍云、上海云盾、360网站卫士、魔门云(非联盟已回源,备案无国内,只有一两个节点,巨坑!)等等。
定时清理WordPress的垃圾
压缩合并让请求更快
动静分离让静态资源国内加载
如果你是国外主机的话,这个方法十分管用,可以把图片、CSS、JS文件等托管到国内,不过如果有了HTTP/2的话建议不要搞,因为又要与一个域名握手了。
HTTP/2 SPDY大法好
InstantClick预加载
这个之前提到过,InstantClick当访客鼠标悬浮在a链接时,InstantClick会异步请求这个页面,当访客点击时,便瞬间切页,有木有飞起?不过这玩意会扯出一大堆Bug,像统计、高亮什么的都需要重载,萌新就别弄了,国内估计也就泽泽大佬的Yo模板自带了,至于WordPress还没见过,主题作者也不想撤扯出一大堆问题让用户天天问吧。
经常听一群人说清电脑辣鸡,windows有垃圾,WordPress当然也有,例如自动草稿这样的肯定是不要的东西,这里呢推荐WP Clean Up插件,国人写的。
希望可以帮助到你,望采纳!
F. thinkphp3.2.3 怎么上传form表单
上传表单
在ThinkPHP中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:
<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
注意,要使用上传功能 你的表单需要设置 enctype="multipart/form-data"
多文件上传支持
如果需要使用多个文件上传,只需要修改表单,把
<input type='file' name='photo'>
改为
<input type='file' name='photo1'>
<input type='file' name='photo2'>
<input type='file' name='photo3'>
或者
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
两种方式的多附件上传系统的文件上传类都可以自动识别。
上传操作
ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->success('上传成功!');
}
}
上传类对图片文件的上传安全做了支持,如果企图上传非法的图像文件,系统会提示 非法图像文件。 为了更好的使用上传功能,建议你的服务器开启finfo模块支持
上传参数
在上传操作之前,我们可以对上传的属性进行一些设置,Upload类支持的属性设置包括:
属性描述
maxSize文件上传的最大文件大小(以字节为单位),0为不限大小
rootPath文件上传保存的根路径
savePath文件上传的保存路径(相对于根路径)
saveName上传文件的保存规则,支持数组和字符串方式定义
saveExt上传文件的保存后缀,不设置的话使用原文件后缀
replace存在同名文件是否是覆盖,默认为false
exts允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
mimes允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
autoSub自动使用子目录保存上传文件 默认为true
subName子目录创建方式,采用数组或者字符串方式定义
hash是否生成文件的hash编码 默认为true
callback检测文件是否存在回调,如果存在返回文件信息数组
上面的属性可以通过两种方式传入:
实例化传入
我们可以在实例化的时候直接传入参数数组,例如:
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);// 实例化上传类
关于saveName和subName的使用后面我们会有详细的描述。
动态赋值
支持在实例化后动态赋值上传参数,例如:
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728;
$upload->rootPath = './Uploads/';
$upload->savePath = '';
$upload->saveName = array('uniqid','');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
上面的设置和实例化传入的效果是一致的。
上传文件信息
设置好上传的参数后,就可以调用Think\Upload类的upload方法进行附件上传,如果失败,返回false,并且用getError方法获取错误提示信息;如果上传成功,就返回成功上传的文件信息数组。
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename'];
}
}
每个文件信息又是一个记录了下面信息的数组,包括:
属性描述
key附件上传的表单名称
savepath上传文件的保存路径
name上传文件的原始名称
savename上传文件的保存名称
size上传文件的大小
type上传文件的MIME类型
ext上传文件的后缀类型
md5上传文件的md5哈希验证字符串 仅当hash设置开启后有效
sha1上传文件的sha1哈希验证字符串 仅当hash设置开启后有效
文件上传成功后,就可以使用这些文件信息来进行其他的数据操作,例如保存到当前数据表或者单独的附件数据表。
例如,下面表示把上传信息保存到数据表的字段:
$model = M('Photo');
// 取得成功上传的文件信息
$info = $upload->upload();
// 保存当前数据对象
$data['photo'] = $info[0]['savename'];
$data['create_time'] = NOW_TIME;
$model->add($data);
单文件上传
upload方法支持多文件上传,有时候,我们只需要上传一个文件,就可以使用Upload类提供的uploadOne方法上传单个文件,例如:
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
// 上传单个文件
$info = $upload->uploadOne($_FILES['photo1']);
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
echo $info['savepath'].$info['savename'];
}
}
uploadOne方法上传成功后返回的文件信息和upload方法的区别是只有单个文件信息的一维数组。
上传文件的命名规则
上传文件的命名规则(saveName)用于确保文件不会产生冲突或者覆盖的情况。命名规则的定义可以根据你的业务逻辑来调整,不是固定的。例如,如果你采用时间戳的方式来定义命名规范,那么在同时上传多个文件的时候可能产生冲突(因为同一秒内可以上传多个文件),因此你需要根据你的业务需求来设置合适的上传命名规则。这里顺便来说下saveName参数的具体用法。
一、采用函数方式
如果传入的字符串是一个函数名,那么表示采用函数动态生成上传文件名(不包括文件后缀),例如:
// 采用时间戳命名
$upload->saveName = 'time';
// 采用GUID序列命名
$upload->saveName = 'com_create_guid';
也可以采用用户自定义函数
// 采用自定义函数命名
$upload->saveName = 'myfun';
默认的命名规则设置是采用uniqid函数生成一个唯一的字符串序列。
saveName的值支持数组和字符串两种方式,如果是只有一个参数或者没有参数的函数,直接使用字符串设置即可,如果需要传入额外的参数,可以使用数组方式,例如:
// 采用date函数生成命名规则 传入Y-m-d参数
$upload->saveName = array('date','Y-m-d');
// 如果有多个参数需要传入的话 可以使用数组
$upload->saveName = array('myFun',array('__FILE__','val1','val2'));
如果需要使用上传的原始文件名,可以采用__FILE__传入,所以上面的定义规则,最终的结果是 myFun('上传文件名','val1','val2')执行的结果。
二、直接设置上传文件名
如果传入的参数不是一个函数名,那么就会直接当做是上传文件名,例如:
$upload->saveName = time().'_'.mt_rand();
表示上传的文件命名采用时间戳加一个随机数的组合字符串方式。
当然,如果觉得有必要,你还可以固定设置一个上传文件的命名规则,用于固定保存某个上传文件。
$upload->saveName = 'ThinkPHP';
三、保持上传文件名不变
如果你想保持上传的文件名不变,那么只需要设置命名规范为空即可,例如:
$upload->saveName = '';
一般来说不建议保持不变,因为会导致相同的文件名上传后被覆盖的情况。
子目录保存
saveName只是用于设置文件的保存规则,不涉及到目录,如果希望对上传的文件分子目录保存,可以设置autoSub和subName参数来完成,例如:
// 开启子目录保存 并以日期(格式为Ymd)为子目录
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
可以使用自定义函数来保存,例如:
// 开启子目录保存 并调用自定义函数get_user_id生成子目录
$upload->autoSub = true;
$upload->subName = 'get_user_id';
和saveName参数一样,subName的定义可以采用数组和字符串的方式。
注意:如果get_user_id函数未定义的话,会直接以get_user_id字符串作为子目录的名称保存。
子目录保存和文件命名规则可以结合使用。
上传驱动
上传类可以支持不同的环境,通过相应的上传驱动来解决,默认情况下使用本地(Local)上传驱动,当然,你还可以设置当前默认的上传驱动类型,例如:
'FILE_UPLOAD_TYPE' => 'Ftp',
'UPLOAD_TYPE_CONFIG' => array(
'host' => '192.168.1.200', //服务器
'port' => 21, //端口
'timeout' => 90, //超时时间
'username' => 'ftp_user', //用户名
'password' => 'ftp_pwd', //密码 ),
表示当前使用Ftp作为上传类的驱动,上传的文件会通过FTP传到指定的远程服务器。
也可以在实例化上传类的时候指定,例如:
$config = array(
'maxSize' = 3145728,
'rootPath' = './Uploads/',
'savePath' = '',
'saveName' = array('uniqid',''),
'exts' = array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' = true,
'subName' = array('date','Ymd'),
);
$ftpConfig = array(
'host' => '192.168.1.200', //服务器
'port' => 21, //端口
'timeout' => 90, //超时时间
'username' => 'ftp_user', //用户名
'password' => 'ftp_pwd', //密码 );
$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 实例化上传类
目前已经支持的上传驱动包括Local、Ftp、Sae、Bcs、七牛和又拍云等。