精华内容
下载资源
问答
  • 本文是MySQL优化系列文章的第一篇缓存优化的续篇,为大家更为详细的介绍缓存优化的方方面面,希望大家能够喜欢
  • 主要介绍了Android编程使用缓存优化ListView的方法,涉及ListView针对sd卡缓存及内存缓存的优化技巧,需要的朋友可以参考下
  • 针对现有的压缩数据库中大规模电子信息缓存优化方法存在着缓存效率低、鲁棒性差的缺陷,提出压缩数据库中大规模电子信息缓存优化方法。引入Redis工具搭建大规模电子信息缓存框架,对电子信息的缓存进行优化,对压缩...
  • 大规模启用缓存的物联网网络中的随机缓存优化
  • 本文实例讲述了CI框架数据库查询缓存优化的方法。分享给大家供大家参考,具体如下: CI框架中有个比较好的查询优化,就是数据库缓存优化 1.开启缓存 //在application/config.php中开启 $db['default']['cache_on'] ...
  • MySQL优化之缓存优化

    2020-09-09 19:37:11
    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。
  • Android使用缓存优化ListView
  • 使用APC缓存优化PHP程序
  • 以信息为中心的移动缓存网络框架和缓存优化:一项调查
  • php缓存优化

    千次阅读 2017-02-23 16:41:38
    常用的php缓存优化:apc、Xcache、eAccelerator,zend Optimizer以及php5.5提出的Opcache。 1,apc(alternative php cache:可选php缓存):apc缓存主要分为两部分:系统缓存和用户数据缓存。 系统缓存:将php源码...

    php程序的执行流程
    —》客户端(浏览器)请求Get hello.php
    —-》cgi服务器接(譬如apache)收到请求,根据配置寻找php的处理程序(譬如mod_php)
    —-》apache加载php的处理程序,php的处理程序读取php.ini初始化php的解释环境
    —-》mod_php定位寻找hell.php,将其载入到内存中来
    —-》mod_php编译源代码成为opcode树
    —-》mod_php执行opcode树
    —-》生成结果给浏览器
    常用的php缓存优化:apc、Xcache、eAccelerator,zend Optimizer以及php5.5提出的Opcache。
    1,apc(alternative php cache:可选php缓存):apc缓存主要分为两部分:系统缓存和用户数据缓存。
    系统缓存:将php源码编译后的结果缓存起来,以后每次调用时都会对比时间标记,如果未过期,则调用缓存结果,默认缓存时间是一小时,这样会浪费cpu时间,可以在php.ini中设置永不过期,不过这样每次改运php代码都要重启web服务器。目前apc使用最多的就是系统缓存。
    用户数据缓存:用户可以通过apc_add()、acp_fetch()添加和读取缓存,如果数据量不是很大,可以使用,数据量很大的话还是使用memcache。详细请访问:apc缓存配置及使用
    2,eaccelerator。通过将php脚本缓存在其编译状态来提高脚本的性能,从而消除编译的开销,它还优化脚本以加速其执行,eaccelerator通常可以减少服务器开销,并将php代码的速度提升1-10倍。
    eaccelerator将编译的php存储在共享内存中,并直接从中执行代码,他只是在短时间内创建锁,同时在缓存文件中搜索编译的php脚本,因此一个脚本可以由多个引擎同时执行,无法容纳在共享内存中的文件只能缓存在磁盘上。
    3,xcache(国人开发):与eaccelerator相似,将源码编译后放到内存中,以提高php性能。
    安装配置:windows下xcache安装与配置
    4,zend optimizer。zend optimizer 是一个代码优化的模块,可以调优php代码,实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化。代码性能可以提高40%到100%,从这点上来说,应该不具有强大的缓存功能,没有读过源码,不清楚是否具有缓存 以及缓存质量如何。
    5,opcache。
    详见:PHP开启opcache方法

    展开全文
  • 安卓异步加载Json缓存优化,一个小Demo,演示安卓异步加载Json缓存优化
  • 使用APC缓存优化PHP程序
  • Django 缓存优化之文件缓存

    千次阅读 2018-04-25 13:53:29
    缓存优化是指在Django中开启缓存设置,这样在网站流量非常大的时候就不需要频繁访问数据库,提高系统性能。相关文档:https://docs.djangoproject.com/en/1.11/topics/cache/使用文件做缓存的具体操作:1. 开启缓存2...

    缓存优化是指在Django中开启缓存设置,这样在网站流量非常大的时候就不需要频繁访问数据库,提高系统性能。

    相关文档:https://docs.djangoproject.com/en/1.11/topics/cache/

    使用文件做缓存的具体操作:

    1. 开启缓存


    2.开启缓存的中间件

    保存缓存的功能:'django.middleware.cache.UpdateCacheMiddleware' 

    判断是否有缓存:'django.middleware.cache.FetchFromCacheMiddleware',


    3.启动站点:python manage.py runserver

    访问站点

    可以看到cache文件下有了缓存文件



    展开全文
  • Android 异步加载图片缓存优化能异步加载图片,并缓存到本地,采用一级缓存,二级缓存和本地缓存,避免oom异常。源码中有详细注释,资料中有jar包,可以直接复制到项目中使用。
  • mysql缓存优化

    2016-08-15 10:16:26
    mysql整体优化
  • listview获取网络图片缓存优化
  • php缓存优化,php配置opchche

    千次阅读 2017-05-03 11:38:26
    常用的php缓存优化:apc、Xcache、eAccelerator,zend Optimizer以及php5.5提出的Opcache。 1,apc(alternative php cache:可选php缓存):apc缓存主要分为两部分:系统缓存和用户数据缓存。 系统缓存:将php源码...

    常用的php缓存优化:apc、Xcache、eAccelerator,zend Optimizer以及php5.5提出的Opcache。

    1,apc(alternative php cache:可选php缓存):apc缓存主要分为两部分:系统缓存和用户数据缓存。
    系统缓存:将php源码编译后的结果缓存起来,以后每次调用时都会对比时间标记,如果未过期,则调用缓存结果,默认缓存时间是一小时,这样会浪费cpu时间,可以在php.ini中设置永不过期,不过这样每次改运php代码都要重启web服务器。目前apc使用最多的就是系统缓存。
    用户数据缓存:用户可以通过apc_add()、acp_fetch()添加和读取缓存,如果数据量不是很大,可以使用,数据量很大的话还是使用memcache。详细请访问:apc缓存配置及使用
    2,eaccelerator。通过将php脚本缓存在其编译状态来提高脚本的性能,从而消除编译的开销,它还优化脚本以加速其执行,eaccelerator通常可以减少服务器开销,并将php代码的速度提升1-10倍。
    eaccelerator将编译的php存储在共享内存中,并直接从中执行代码,他只是在短时间内创建锁,同时在缓存文件中搜索编译的php脚本,因此一个脚本可以由多个引擎同时执行,无法容纳在共享内存中的文件只能缓存在磁盘上。
    3,xcache(国人开发):与eaccelerator相似,将源码编译后放到内存中,以提高php性能。
    安装配置:windows下xcache安装与配置
    4,zend optimizer。zend optimizer 是一个代码优化的模块,可以调优php代码,实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化。代码性能可以提高40%到100%,从这点上来说,应该不具有强大的缓存功能,没有读过源码,不清楚是否具有缓存 以及缓存质量如何。
    5,opcache。

    PHP开启opcache方法

    1、打开php.ini文件

    2、找到:[opcache],设置为:

    复制代码
    [opcache]
    ; dll地址
    zend_extension=php_opcache.dll
    ; 开关打开
    opcache.enable=1
    ; 开启CLI
    opcache.enable_cli=1
    ; 可用内存, 酌情而定, 单位为:Mb
    opcache.memory_consumption=528
    ; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
    opcache.interned_strings_buffer=8
    ; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
    opcache.max_accelerated_files=10000
    ; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
    opcache.revalidate_freq=1
    ; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
    opcache.fast_shutdown=1
    复制代码

     

    3、重启apache即可。


     

    测试

    配置完成后,可以使用如下代码查询opcache:

    <?php
        phpinfo();
    ?>

    访问页面得到如下界面:

     


     

     

    以下是opcache的配置说明:

    复制代码
    [opcache]
    zend_extension = "G:/PHP/php-5.5.6-Win32-VC11-x64/ext/php_opcache.dll"
     
    ; Zend Optimizer + 的开关, 关闭时代码不再优化.
    opcache.enable=1
     
    ; Determines if Zend OPCache is enabled for the CLI version of PHP
    opcache.enable_cli=1
     
     
    ; Zend Optimizer + 共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB)
    ; 推荐 128
    opcache.memory_consumption=64
     
    ; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
    ; 推荐 8
    opcache.interned_strings_buffer=4
     
     
    ; 最大缓存的文件数目 200  到 100000 之间
    ; 推荐 4000
    opcache.max_accelerated_files=2000
     
    ; 内存“浪费”达到此值对应的百分比,就会发起一个重启调度.
    opcache.max_wasted_percentage=5
     
    ; 开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,
    ; 以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,
    ; 但是会对已存在的应用造成破坏.
    opcache.use_cwd=0
     
     
    ; 开启文件时间戳验证 
    opcache.validate_timestamps=1
     
     
    ; 2s检查一次文件更新 注意:0是一直检查不是关闭
    ; 推荐 60
    opcache.revalidate_freq=2
     
    ; 允许或禁止在 include_path 中进行文件搜索的优化
    ;opcache.revalidate_path=0
     
     
    ; 是否保存文件/函数的注释   如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释
    ; 推荐 0
    opcache.save_comments=1
     
    ; 是否加载文件/函数的注释
    ;opcache.load_comments=1
     
     
    ; 打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高
    ; 推荐 1
    opcache.fast_shutdown=1
     
    ;允许覆盖文件存在(file_exists等)的优化特性。
    ;opcache.enable_file_override=0
     
     
    ; 定义启动多少个优化过程
    ;opcache.optimization_level=0xffffffff
     
     
    ; 启用此Hack可以暂时性的解决”can’t redeclare class”错误.
    ;opcache.inherited_hack=1
     
    ; 启用此Hack可以暂时性的解决”can’t redeclare class”错误.
    ;opcache.dups_fix=0
     
    ; 设置不缓存的黑名单
    ; 不缓存指定目录下cache_开头的PHP文件. /png/www/example.com/public_html/cache/cache_ 
    ;opcache.blacklist_filename=
     
     
    ; 通过文件大小屏除大文件的缓存.默认情况下所有的文件都会被缓存.
    ;opcache.max_file_size=0
     
    ; 每 N 次请求检查一次缓存校验.默认值0表示检查被禁用了.
    ; 由于计算校验值有损性能,这个指令应当紧紧在开发调试的时候开启.
    ;opcache.consistency_checks=0
     
    ; 从缓存不被访问后,等待多久后(单位为秒)调度重启
    ;opcache.force_restart_timeout=180
     
    ; 错误日志文件名.留空表示使用标准错误输出(stderr).
    ;opcache.error_log=
     
     
    ; 将错误信息写入到服务器(Apache等)日志
    ;opcache.log_verbosity_level=1
     
    ; 内存共享的首选后台.留空则是让系统选择.
    ;opcache.preferred_memory_model=
     
    ; 防止共享内存在脚本执行期间被意外写入, 仅用于内部调试.
    ;opcache.protect_memory=0
    复制代码

     

    文章参考

    使用 OpCache 提升 PHP 5.5+ 程序性能

    https://phphub.org/topics/301

    php opcache 配置

    https://blog.hackroad.com/operations-engineer/windows_server/9311.html

    展开全文
  • Android开发之ListView 优化之缓存优化

    千次阅读 2016-10-25 16:51:24
    通过平时对ListView的使用,目前我把...1.缓存优化 2.数据优化 3.其他方面优化 0.未优化简单代码 public class MainActivity extends Activity { private ListView lv_demo; private List list; @Override

    通过平时对ListView的使用,目前我把ListView的优化分为以下几个方面:

    缓存优化、数据优化、其他方面优化


    0.未优化简单代码

    <span style="font-size:14px;">public class MainActivity extends Activity {
    
        private ListView lv_demo;
        private List<String> list;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            lv_demo = (ListView) findViewById(R.id.listView);
            //list为要加载的条目文本的集合,这里总共是100条
            list = new ArrayList<String>();
            for (int i = 0; i < 1000; i++) {
                list.add("条目" + i);
            }
    
            lv_demo.setAdapter(new MyAdapter());
        }
    
        private class MyAdapter extends BaseAdapter {
    
            @Override
            public int getCount() {
                return list.size();
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                //listview_item里只有一个textview
                View view = View.inflate(MainActivity.this, R.layout.listview_item, null);
                //使用每一次都findviewById的方法来获得listview_item内部的组件
                TextView tv_item = (TextView) view.findViewById(R.id.tv_item);
                tv_item.setText(list.get(position));
                return view;
            }
    
            @Override
            public Object getItem(int position) {
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                return 0;
            }
    
        }
    }</span>




    1.缓存优化(适配器Adapter)

        即Google I/O 2009 Romain Guy 所讲的内容,利用ListView的自身优化机制优化——缓存优化。

    ListView的Adapter的作用如下图所示


    1.1 优化一:复用convertView

        Android系统本身为我们考虑了ListView的优化问题,在复写的Adapter的类中,比较重要的两个方法是getCount()和getView()。界面上有多少个条显示,就会调用多少次的getView()方法;因此如果在每次调用的时候,如果不进行优化,每次都会使用View.inflate(….)的方法,都要将xml文件解析,并显示到界面上,这是非常消耗资源的:因为有新的内容产生就会有旧的内容销毁,所以,可以复用旧的内容。 
    优化: 
        在getView()方法中,系统就为我们提供了一个复用view的历史缓存对象convertView,当显示第一屏的时候,每一个item都会新创建一个view对象,这些view都是可以被复用的;如果每次显示一个view都要创建一个,是非常耗费内存的;所以为了节约内存,可以在convertView不为null的时候,对其进行复用。

    示例:

    <span style="font-size:14px;"> @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View view;
                // 判断convertView的状态,来达到复用效果
                if(null == convertView){
                    //如果convertView为空,则表示第一次显示该条目,需要创建一个view
                    view = View.inflate(Main1Activity.this,R.layout.listview_item,null);
                }else{
                    //否则表示可以复用convertView
                    view = convertView;
                }
                TextView textView =(TextView) view.findViewById(R.id.tv_item);
                textView.setText(list.get(position));
                return view;
            }</span>

    1.2 优化二:缓存item条目的引用——ViewHolder

    findViewById()这个方法是比较耗性能的操作,因为这个方法要找到指定的布局文件,进行不断地解析每个节点:从最顶端的节点进行一层一层的解析查询,找到后在一层一层的返回,如果在左边没找到,就会接着解析右边,并进行相应的查询,直到找到位置。因此可以对findViewById进行优化处理。

    特点:xml文件被解析的时候,只要被创建出来了,其孩子的id就不会改变了。根据这个特点,可以将孩子id存入到指定的集合中,每次就可以直接取出集合中对应的元素就

    可以了。

    优化: 
    在创建view对象的时候,减少布局文件转化成view对象的次数;即在创建view对象的时候,把所有孩子全部找到,并把孩子的引用给存起来 
    ①定义存储控件引用的类ViewHolder 
    这里的ViewHolder类需要不需要定义成static,根据实际情况而定,如果item不是很多的话,可以使用,这样在初始化的时候,只加载一次,可以稍微得到一些优化 
    不过,如果item过多的话,建议不要使用。因为static是Java中的一个关键字,当用它来修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static修饰的变量,它的生命周期是很长的,如果用它来引用一些资源耗费过多的实例(比如Context的情况最多),这时就要尽量避免使用了。 
    static class ViewHolder{ 
    //定义item中相应的控件 

    ②创建自定义的类:ViewHolder holder = null; 
    ③将子view添加到holder中: 
    在创建新的listView的时候,创建新的ViewHolder,把所有孩子全部找到,并把孩子的引用给存起来 
    通过view.setTag(holder)将引用设置到view中 
    通过holder,将孩子view设置到此holder中,从而减少以后查询的次数 
    ④在复用listView中的条目的时候,通过view.getTag(),将view对象转化为holder,即转化成相应的引用,方便在下次使用的时候存入集合。 
    通过view.getTag(holder)获取引用(需要强转)

        示例:

        public class MyAdapter extends BaseAdapter{
    
            @Override
            public int getCount() {
                return list.size();
            }
    
            @Override
            public Object getItem(int position) {
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                return 0;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder  viewHolder;
                if(null == convertView){
                    convertView = View.inflate(Main2Activity.this,R.layout.listview_item,null);
                    viewHolder = new ViewHolder();
                    viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_item);
                    convertView.setTag(viewHolder);
                }else{
                    viewHolder = (ViewHolder) convertView.getTag();
                }
    
                viewHolder.textView.setText(list.get(position));
                return convertView;
            }
        }
        static class ViewHolder{
            TextView textView;
        }


    下面部分摘抄至:点击打开链接

    3.数据优化
    3.1 ListView中数据的分批及分页加载:

    需求:ListView有一万条数据,如何显示;如果将十万条数据加载到内存,很消耗内存 
    解决办法: 
    优化查询的数据:先获取几条数据显示到界面上 
    进行分批处理—优化了用户体验 
    进行分页处理—优化了内存空间 
    说明: 
    一般数据都是从数据库中获取的,实现分批(分页)加载数据,就需要在对应的DAO中有相应的分批(分页)获取数据的方法,如findPartDatas () 
    1、准备数据: 
    在dao中添加分批加载数据的方法:findPartDatas () 
    在适配数据的时候,先加载第一批的数据,需要加载第二批的时候,设置监听检测何时加载第二批 
    2、设置ListView的滚动监听器:setOnScrollListener(new OnScrollListener{….}) 
    ①、在监听器中有两个方法:滚动状态发生变化的方法(onScrollStateChanged)和listView被滚动时调用的方法(onScroll) 
    ②、在滚动状态发生改变的方法中,有三种状态: 
    手指按下移动的状态: SCROLL_STATE_TOUCH_SCROLL: // 触摸滑动 
    惯性滚动(滑翔(flgin)状态): SCROLL_STATE_FLING: // 滑翔 
    静止状态: SCROLL_STATE_IDLE: // 静止 
    3、对不同的状态进行处理: 
    分批加载数据,只关心静止状态:关心最后一个可见的条目,如果最后一个可见条目就是数据适配器(集合)里的最后一个,此时可加载更多的数据。
    在每次加载的

    时候,计算出滚动的数量,当滚动的数量大于等于总数量的时候,可以提示用户无更多数据了。

    3.2 ListView中图片的优化:详看OOM异常中图片的优化

    1、处理图片的方式: 
    如果自定义Item中有涉及到图片等等的,一定要狠狠的处理图片,图片占的内存是ListView项中最恶心的,处理图片的方法大致有以下几种: 
    ①、不要直接拿路径就去循环decodeFile();使用Option保存图片大小、不要加载图片到内存去 
    ②、拿到的图片一定要经过边界压缩 
    ③、在ListView中取图片时也不要直接拿个路径去取图片,而是以WeakReference(使用WeakReference代替强引用。 比如可以使用WeakReference mContextRef)、SoftReference、WeakHashMap等的来存储图片信息,是图片信息不是图片哦! 
    ④、在getView中做图片转换时,产生的中间变量一定及时释放 
    2、异步加载图片基本思想: 
    1)、 先从内存缓存中获取图片显示(内存缓冲) 
    2)、获取不到的话从SD卡里获取(SD卡缓冲) 
    3)、都获取不到的话从网络下载图片并保存到SD卡同时加入内存并显示(视情况看是否要显示) 
    原理: 
    优化一:先从内存中加载,没有则开启线程从SD卡或网络中获取,这里注意从SD卡获取图片是放在子线程里执行的,否则快速滑屏的话会不够流畅。 
    优化二:与此同时,在adapter里有个busy变量,表示listview是否处于滑动状态,如果是滑动状态则仅从内存中获取图片,没有的话无需再开启线程去外存或网络获取图片。 
    优化三:ImageLoader里的线程使用了线程池,从而避免了过多线程频繁创建和销毁,有的童鞋每次总是new一个线程去执行这是非常不可取的,好一点的用的AsyncTask类,其实内部也是用到了线程池。在从网络获取图片时,先是将其保存到sd卡,然后再加载到内存,这么做的好处是在加载到内存时可以做个压缩处理,以减少图片所占内存。 
    Tips:这里可能出现图片乱跳(错位)的问题: 
    图片错位问题的本质源于我们的listview使用了缓存convertView,假设一种场景,一个listview一屏显示九个item,那么在拉出第十个item的时候,事实上该item是重复使用了第一个item,也就是说在第一个item从网络中下载图片并最终要显示的时候,其实该item已经不在当前显示区域内了,此时显示的后果将可能在第十个item上输出图像,这就导致了图片错位的问题。所以解决之道在于可见则显示,不可见则不显示。在ImageLoader里有个imageViews的map对象,就是用于保存当前显示区域图像对应的url集,在显示前判断处理一下即可。

    4.ListView的其他优化:
    1、尽量避免在BaseAdapter中使用static 来定义全局静态变量: 
    static是Java中的一个关键字,当用它来修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static修饰的变量,它的生命周期是很长的,如果用它来引用一些资源耗费过多的实例(比如Context的情况最多),这时就要尽量避免使用了。 
    2、尽量使用getApplicationContext: 
    如果为了满足需求下必须使用Context的话:Context尽量使用Application Context,因为Application的Context的生命周期比较长,引用它不会出现内存泄露的问题 
    3、尽量避免在ListView适配器中使用线程: 
    因为线程产生内存泄露的主要原因在于线程生命周期的不可控制。之前使用的自定义ListView中适配数据时使用AsyncTask自行开启线程的,这个比用Thread更危险,因为Thread只有在run函数不结束时才出现这种内存泄露问题,然而AsyncTask内部的实现机制是运用了线程执行池(ThreadPoolExcutor),这个类产生的Thread对象的生命周期是不确定的,是应用程序无法控制的,因此如果AsyncTask作为Activity的内部类,就更容易出现内存泄露的问题。解决办法如下: 
    ①、将线程的内部类,改为静态内部类。 
    ②、在线程内部采用弱引用保存Context引用



    展开全文
  • 磁盘缓存优化

    2019-01-30 16:16:24
    磁盘缓存可以清理磁盘,优化磁盘,方便大家对系统盘分区整理各类存储区域
  • 重点分类并汇总了其架构缓存的优化方法和策略,分析了其中针对的新型插入性存储器写入高,写寿命有限和写入延迟长等缺点造成的关键优化技术,最后探讨了新型的初步性存储器件在未来缓存优化中可能的研究方向。
  • listview获取网络图片缓存优化.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 缓存优化技术

    千次阅读 2018-08-14 20:15:12
    初步解决方案是在我们的应用与数据库之间加上一个redis集群,从原本的应用直接访问数据库去查询数据,到现在的先在缓存中查找,要是在缓存中查找不到再去数据库中查找,这样数据库的吞吐量和并发量将至少提高100倍...
  • 缓存优化软件

    2011-10-19 13:53:48
    这款软件是德国开发 制作的。占用内存小。功能实用。 欢迎大家下载。如有不明联系Q285193613
  • 关于前端缓存优化

    千次阅读 2019-07-04 16:59:08
    关于缓存,大概可以分为以下几种: ① CDN缓存 ② DNS缓存 ③ 客户端缓存(无需请求的memory cache,disk cache;需要发请求验证的Etag/Last-Modified304) ④ Service Worker与缓存及离线缓存 ⑤ PageCache与...
  • Redis API接口缓存优化实战

    千次阅读 2019-08-29 17:32:48
    Redis 缓存请求内容,优化 API 接口性能 在我们日常的接口开发过程中,或者第三方请求的过程中,每次刷新页面都会重新请求接口,而且大部分接口短时间内是不会变化的; 在某些场景下,我们需要转发某些第三方的API...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 573,528
精华内容 229,411
关键字:

缓存优化