mybatis3 没有生成example_网站图片尺寸自动生成

目录

1. 背景

2. 实现思路

2.1. 尺寸动态变化

2.2. 实时裁剪并静态化

3. web或代理服务器插件实现方案

1. 背景

某天我的前同事给我打电话,说他们的负载很高,经查发现网站首页有20M,原因是首页直接引用高清图片,没有安装分辨率生成缩图。于是我便想出了下面的方案。

我认为方案需求有如下几个要素:

  1. 图片压缩
  2. 尺寸修改
  3. 图片缓存
  4. 带宽因素

例如用户使用手机访问网站,手机屏幕尺寸非常多样化,常见的有QVGA(320×240)、HGVA(480×320)、WVGA(800×480)、QCIF(176×144)、SVGA(640x480)、WXGA(1280×800)。如果一个用户的手机屏幕是320×240,打开网站后显示1027*768图片很不切合实际。同时用户也多出不少带宽开销。

我们需要给用户更好的体验,就要多从用户的角度去考虑,如根据用户网速,带宽,分辨率,为用户提供更适合他终端的多媒体资源。

2. 实现思路

2.1. 尺寸动态变化

B/S结构应用程序无法获取客户端的分辨率等信息,我们将采用Javascript取出参数,然后告知服务器端。

有下面几种实现方式:

  1. 通过cookie
  2. post传递给服务器,然后存储在session中
  3. get 传递给服务器,然后存储在session中

仅举一个例子

<script type="text/javascript">
$(function(){var width=window.screen.height;var height=window.screen.width;$.post('http://www.example.com/screen/resize.html',{w:width,h:height});
});
</script>

HTML页面中的图片的引用路径

<img src="http://img.example.com/sample.jpg" />		

图片服务器rewrite处理

http://img.example.com/sample.jpg => http://img.example.com/index.php/sample.jpg		

index.php会首先载入sample.jpg文件,然后综合网速,带宽,分辨率等因素,重新压缩图片,修改尺寸,发送mime头,输出正文。

2.2. 实时裁剪并静态化

为了防止图片地址冲突,我们首先需要URL唯一化,这样每访问一次会生成一张符合你需求尺寸的图片。

http://img.example.com/sample_(width)x(height)_(quality).jpg

<img src="http://img.example.com/sample_1980x1080_100.jpg" />	
<img src="http://img.example.com/sample_800x600_80.jpg" />
<img src="http://img.example.com/sample_640x480_50.jpg" />

配置nginx通过try_files配置项可以实现检查静态文件是否存在,如果不存在边调用index.php生成图片,当再次访问时会直接读取静态文件,不会再重新生成。

server {listen       80;server_name  inf.example.com;charset utf-8;access_log  /var/log/nginx/inf.example.com.access.log  main;error_log  /var/log/nginx/inf.example.com.error.log;location / {root   /www/example.com/inf.example.com/images;index  index.html;try_files $uri $uri/ /index.php?_url=$request_uri;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ .php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000#location ~ /index.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /www/example.com/inf.example.com/frontend/public$fastcgi_script_name;include        fastcgi_params;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one#location ~ /.ht {deny  all;}
}			

通过这种方法还可以实现更复杂的需求,例如调整亮度,对比度,饱和度,色阶,图层叠加等等......

3. web或代理服务器插件实现方案

首先我们要将分辨率参数放到cookie中,因为web服务器是可以跟踪cookie数据的

通过 web 扩展实现,例如我们开发一个apache插件,编译后是".so"文件,配置httpd.conf载入插件,插件具体功能是综合网速,带宽,分辨率等因素,重新压缩图片,修改尺寸,最后展现图片。

反向代理与web服务器实现原理相同

总结:这种方案可以非常方便输出不同尺寸的图片,但是一定要注意黑客攻击。

netkiller:怎样制作RPM包​zhuanlan.zhihu.com
054824b6fb4934b04bed0ae49e2eac8b.png
netkiller:数据库与图片完美解决方案​zhuanlan.zhihu.com
4f97ad9b39e51ad11c54db8c22648814.png
netkiller:Tomcat 安全配置与性能优化​zhuanlan.zhihu.com
6d6f787c72e8cc95abd6e5e16772eb62.png
netkiller:Linux 系统安全与优化配置​zhuanlan.zhihu.com
3c298492509b2fd5a0744413f6068f71.png
netkiller:网站防刷方案​zhuanlan.zhihu.com
48463f15e4ace55876a56aa8cb476927.png
netkiller:数据库恢复方案​zhuanlan.zhihu.com
4768984d4c0b06b746b19909360c3a27.png
netkiller:Java 二进制文件操作大全​zhuanlan.zhihu.com
13854146642e8fc11145096d37ebff98.png
netkiller:数据库进程间通信解决方案(二)​zhuanlan.zhihu.com
f5b8abfdc07010dc77411ca3ea3723ae.png
netkiller:数据库进程间通信解决方案(一)​zhuanlan.zhihu.com
f5b8abfdc07010dc77411ca3ea3723ae.png
netkiller:Shell 高级编程​zhuanlan.zhihu.com
86ee51029cf1c501118216726472df3d.png
netkiller:网站静态内容出版解决方案​zhuanlan.zhihu.com
23867dce12a23c6265e135bcd17f3792.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法删除所有指定的值_AutoCAD所有系统变量大全

ACADLSPASDOC 0 仅将 acad.lsp 加载到 AutoCAD 任务打开的第一个图形中; 1 将 acad.lsp 加载到每一个打开的图形中ACADPREFIX 存储由 ACAD 环境变量指定的目录路径(如果有的话)&#xff0c;如果需要则附加路径分隔符ACADVER 存储 AutoCAD 的版本号。这个变量与 DXF 文件标题变量…

简述HTML语言概念,HTML语言的基本概念和基本格式.doc

HTML语言的基本概念和基本格式HTML语言的基本概念和基本格式当使用Netscape Navigator 与 Interne Explorer 这些浏览器在Interent上尽情遨游的时候&#xff0c;肯定会被丰富多彩的屏幕内容所吸引&#xff0c;而这些丰富多彩的内容背后&#xff0c;只是用一种简单的超文本标志语…

为什么线程池里的方法会执行两次_新手一看就懂的线程池

作者:码农田小齐来源:https://www.cnblogs.com/nycsde/p/14003888.html那相信大家也能感受到&#xff0c;其实用多线程是很麻烦的&#xff0c;包括线程的创建、销毁和调度等等&#xff0c;而且我们平时工作时好像也并没有这样来 new 一个线程&#xff0c;其实是因为很多框架的底…

华为鸿蒙热水器,美的华为跨界联合!搭载鸿蒙OS的美的产品双11上市

【宅秘新闻】在前段时间的华为开发者大会上&#xff0c;华为正式发布了鸿蒙OS 2.0。华为消费者业务软件部总裁王成录当时表示&#xff0c;美的等家电品牌很快就会推出基于鸿蒙OS 2.0的家电产品。11月11日&#xff0c;美的集团官方宣布搭载鸿蒙OS的美的产品在双十一惊喜上市。宅…

Eclipse构建Maven分包分模块项目并构建服务端

首先说一下Maven 模块结构&#xff1a; 一个简单的Maven模块结构是这样的&#xff1a; ---- app-parent 一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web) |---- pom.xml (pom) | |-------- app-util | |-------- pom.xml (jar) | |-------- app-…

我们一起动手学大模型应用开发

大模型正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。 随着国内外井喷式的大模型 API 服务开放&#xff0c;如何基于大模型 API 快速、便捷地开发具备更强能力、集成大模型的…

登陆页面html5代码qq,HTML5QQ登录的一篇代码分享

html5背景*{margin:0;padding:0;list-style-type:none;}a,img{border:0;}$(function () {if (!window.ActiveXObject && !!document.createElement("canvas").getContext) {$.getScript("http://im-img.qq.com/pcqq/js/200/cav.js?_1428576021379"…

unity 多台 显示器 控制_飞利浦292E2E评测丨宽屏显示器中的多面手

■本文来自中关村在线屏幕比例21:9或32:9的显示器&#xff0c;因为横向屏幕很长&#xff0c;所以被人形象的称为带鱼屏。相较于16:9的显示器&#xff0c;屏幕拥有更多显示面积&#xff0c;我们能获得更多信息&#xff0c;大大提升办公效率。同时带鱼屏打游戏和看电影时也能获得…

Idea 创建简单的SpringBoot 父子项目

背景 使用Idea 创建一个模块化的SpringBoot项目&#xff0c;但是发现Idea 创建父子项目的方式较Eclipse 较为不同&#xff0c;且Idea 创建的过程较Eclipse创建父子项目的过程复杂。 Eclipse 创建SpringBoot父子项目传送门 网上虽然有Idea创建SpringBoot父子项目&#xff0c;但…

微服务架构与SpringCloud

微服务架构简述 通常而言&#xff0c;微服务架构是一种架构模式或者说是一种架构风格&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调、互相配合为用户提供最终价值。服务之间采用轻量级的通…

REST和RPC是什么东东?两者有什么区别

1 REST与RPC概念 什么是REST REST是一种架构风格&#xff0c;指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源&#xff0c;网络上一切皆资源。 REST并没有创造新的技术&#xff0c;组件或服务&#xff0c…

简述计算机进行远程桌面管理操作过程,服务器应用之“远程桌面连接”(操作篇)...

在上篇《服务器应用之“远程桌面连接”(部署篇) 》《服务器应用之“远程桌面连接”(建立篇) 》&#xff0c;我们介绍了远程桌面的部署和建立方法。在远程桌面连接成功后就可以进行一些远程桌面连接可以进行的计算机管理了。具体可以进行的远程桌面连接操作如下&#xff1a;1. 使…

未为dll加载任何符号_专家发现aspersky 和Trend Micro安全性解决方案中的DLL劫持问题...

SafeBreach的研究人员发现了Kaspersky安全连接、Trend Micro最大安全性和Autodesk桌面应用程序中的几个DLL劫持漏洞&#xff0c;黑客可以利用这些漏洞进行DLL预加载、代码执行和权限升级。第一个问题在卡巴斯基安全连接(KSDE) VPN客户端&#xff0c;跟踪为CVE-2019-15689&#…

什么是Eureka? 单机版Eureka如何使用?

Eureka 是什么&#xff1f; Eureka 是Spring Cloud的服务治理组件&#xff0c;有三个核心角色&#xff1a; 服务注册中心、服务提供者、服务消费者。Eureka 主管服务注册中心。 是Netflix的一个子模块&#xff0c;也是核心模块之一。Eureka是一个基于REST的服务&#xff0c;用…

ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...

尽管微软的 Office 和 Windows 10 势头不错&#xff0c;但像 WP 手机、XBox 等方面似乎并未获得预期的成功。而先前为了替代老旧的 IE 浏览器&#xff0c;微软倾力开发的 Edge 也未见起色。不过微软也一直在努力变得更加开放&#xff0c;比如发布 VS for Mac、Office for Mac、…

如何将单机版的Eureka服务改为集群版Eureka服务

Eureka 集群原理 基本原理 上图是来自eureka的官方架构图&#xff0c;这是基于集群配置的eureka&#xff1b; 处于不同节点的eureka通过Replicate进行数据同步Application Service为服务提供者Application Client为服务消费者Make Remote Call完成一次服务调用 服务启动后向…

台式计算机读不到u盘怎么回事,电脑读不出u盘怎么办

把U盘插入电脑USB接口中&#xff0c;却发现找不到U盘图标&#xff0c;甚至连安装U盘驱动的提示也没有&#xff0c;那么电脑读不出u盘怎么办呢?天学习啦小编就和大家说说电脑读不出u盘的解决方法。电脑读不出u盘解决方法1、首先应该排除是否是由于电脑系统问题&#xff0c;具体…

Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?

传统的ACID A&#xff08;Atomicity&#xff09; 原子性C&#xff08;Consistency&#xff09; 一致性I &#xff08;Isolation&#xff09;独立性D&#xff08;Durability&#xff09;持久性 关系型数据库&#xff08;MySQL&#xff0c;Oracle&#xff0c;SqlServer&#xf…

如何将Springboot项目成功部署到linux服务器上?

springboot的jar包方式 idea默认就是jar打包方式所以直接使用maven工具按照步骤点击就可以直接打包ps:打包前你的数据库相关的连接信息要记得修改&#xff0c;不能再用本地的了 第二步&#xff1a;Maven clean &#xff1a;清除编译后的目录&#xff0c;默认是target目录 [IN…

2018年3月计算机二级考试题,2018年3月计算机二级考试Access综合试题十

2018年3月计算机等级考试即将开始&#xff0c;小编在这里为考生们整理了2018年3月计算机二级考试Access综合试题&#xff0c;希望能帮到大家&#xff0c;想了解更多资讯&#xff0c;请关注出国留学网的及时更新哦。2018年3月计算机二级考试Access综合试题十(1)要将“选课成绩”…