精华内容
下载资源
问答
  • 微信小程序之WebSocket

    2017-09-28 16:14:28
    H5引入了webSocket来解决网页端的长链接问题,而微信小程序也支持websocket。这是一个非常重要的特性,所以本系列的文章会专门拿出一篇来讨论websocket。 webSocket本质上也是TCP连接,它提供全双工的数据传输。一...
  • 最近一直在做小程序的底层实现,过程中磕磕绊绊也多次进行架构方向上的转型,趁着周末抽空写一篇文章记录一下开发过程中遇到的问题和一些思考与决策。 本篇文章更多的是在描述架构与技术方向层面的思考...
  • 如果发现之前执行过了,就可以之前保存的静态网页拿出来显示了它也有个缺点,就是不能时时的与数据库同步适用范围,一般的小程序都可以用缓存,对时间要求特别苛刻的,比如抢购什么的就不能使用缓存文...

    使用缓存能够让我们的程序访问起来更加快速,缓存可以减少对数据库的操作,体验起来更好一些,对服务器的压力也小一些,当然服务速度很快

    php文件执行完之后产生的解析完的数据,保存成静态的网页,下次打开的这个文件的时候,如果发现之前执行过了,就可以把之前保存的静态网页拿出来显示了

    它也有个缺点,就是不能时时的与数据库同步

    适用范围,一般的小程序都可以用缓存,对时间要求特别苛刻的,比如抢购什么的就不能使用缓存文件了

    写缓存文件,

    一样要有php文件

    php文件还是放在main目录下

    相对应的html文件还是写在对应的文件夹下

    先把数据库的一系列数据输出一下

    php文件中

    include("../init.inc.php");include("../DBDA.php");$db = newDBDA();$sql = " select * from nation ";$arr = $db->Query($sql);$smarty->assign("shuzu",$arr);$smarty->display("huancun.html");

    html文件中

    无标题文档

    数据列表

    代号名称操作操作
    展开全文
  • 怎么用php语言来文件缓存

    千次阅读 2017-03-08 19:07:44
    php文件执行完之后产生的解析完的数据,保存静态的网页,下次打开的这个文件的时候,如果发现之前执行过了,就可以之前保存的静态网页拿出来显示了 它也有个缺点,就是不能时时的与数据库同步  适用范围,...

    使用缓存能够让我们的程序访问起来更加快速,缓存可以减少对数据库的操作,体验起来更好一些,对服务器的压力也小一些,当然服务速度很快

    php文件执行完之后产生的解析完的数据,保存成静态的网页,下次打开的这个文件的时候,如果发现之前执行过了,就可以把之前保存的静态网页拿出来显示了

    它也有个缺点,就是不能时时的与数据库同步

     适用范围,一般的小程序都可以用缓存,对时间要求特别苛刻的,比如抢购什么的就不能使用缓存文件了

    写缓存文件,

    一样要有php文件

    php文件还是放在main目录下

    相对应的html文件还是写在对应的文件夹下

    先把数据库的一系列数据输出一下

    php文件中

    <?php
    
    $filename = "../cache/huancun.html";
    //缓存文件的路径
     
    include("../init.inc.php");
    include("../DBDA.php");
    $db = new DBDA();
    
    $sql = " select * from nation ";
    $arr = $db->Query($sql);
    
    $smarty->assign("shuzu",$arr);
    $smarty->display("huancun.html");

    html文件中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <h1>数据列表</h1>
    
    <table width="100%" border="1" cellpadding="0"
    cellspacing="0">
    <tr>
    <td>代号</td>
    <td>名称</td>
    <td>操作</td>
    </tr>
    
    <{foreach $shuzu as $v}>
    <tr>
    <td><{$v[0]}></td>
    <td><{$v[1]}></td>
    <td>操作</td>
    </tr>
    <{/foreach}>
    </table>
    </body>
    </html>

    运行后数据就显示出来了

    所谓的缓存,并不是把我们写的这些代码存下来,审查一下它的源代码

    而是把这些保存下来,变成一个静态的,当刷新的时候,直接把已经保存下来的数据直接显示出来,就不再重新访问数据库了,这样节省了很多时间,那如果数据库里面的数据有所变动的话,再走缓存文件就不能把新的数据及时反馈出来了

    上面的代码是没有写缓存操作的样子,下面再来做一下缓存操作

    html文件中不用修改

    php文件中

    <?php
    
    $filename = "../cache/huancun.html";
    //缓存文件的路径
     //判断缓存文件是否存在,如果缓存文件存在直接调用缓存文件,如果缓存文件不
     //存在重新缓存
     if(file_exists($filename))
     {
       //直接调用缓存
       include($filename);     
     }
     else
     {
       //重新缓存
       ob_start();  //开启内存缓存
       
       include("../init.inc.php");
       include("../DBDA.php");
       $db = new DBDA();
    
       $sql = " select * from nation ";
       $arr = $db->Query($sql);
    
       $smarty->assign("shuzu",$arr);
       $smarty->display("huancun.html");
       
       $str = ob_get_content();   //获取内存中的缓存内容
       file_put_contents($filename,$str);
       
      ob_flush();  //关闭内存缓存      
      
      echo "#########################";
     }

    这个一开始运行肯定没有缓存,所以会输出最后的一串井号,再次刷新时就有缓存了,所以直接运行上面的代码,下面的代码就不走了

    运行一下,看看效果

    再来看一下cache文件夹里面有没有huancun.html文件

    然后点开看一下

    以静态的方式保存了这张表格

    再刷新一下那张表格

     

     刷新后表格下面的一串井号消失了

    再刷新后也没有井号

    所以走的是缓存文件

    我们从数据库改个数据看看效果

    改了第一个汉族

    然后再刷新一下表格

    数据并没有改变

    说明缓存文件已经有了,再刷新就只走缓存文件了

    再把这个缓存改进一下,只需改php文件就可以

    给它加上有效期,每隔十秒重新缓存一次,这样就不会出现数据库改变,数据刷新不出来的结果了

    刷新后井号消失

    十秒后刷新,原来的缓存文件过期,就会重新缓存一遍,井号就又会出现

    这样就是静态缓存的一种方法

    分页的话也可以使用

    php文件中

    <?php
    $p=1;
    if(!empty($_GET["page"]))
    {
        $p=$_GET["page"];
    }
    $filename = "../cache/huancun{$p}.html";
    //缓存文件的路径
    
    $time=30;   //缓存有效期30秒
    
     //判断缓存文件是否存在,如果缓存文件存在直接调用缓存文件,如果缓存文件不
     //存在重新缓存
     if(file_exists($filename) && ((filemtime($filename) + $time)>=time()))
     {
       //直接调用缓存
       include($filename);     
     }
     else
     {
       //重新缓存
       ob_start();  //开启内存缓存
       
       include("../init.inc.php");
       include("../DBDA.php");
       $db = new DBDA();
      
      $sall = "select count(*) from nation";
      $zts = $db->StrQuery($sall);
      include("../page.class.php");
      $page = new Page($zts,5);
      
       $sql = " select * from nation ".$page->limit;
       $arr = $db->Query($sql);
       
       $smarty->assign("fpage",$page->fpage());
       $smarty->assign("shuzu",$arr);
       $smarty->display("huancun.html");
       
       $str = ob_get_contents();   //获取内存中的缓存内容
       file_put_contents($filename,$str);
       
      ob_flush();  //关闭内存缓存      
      
      echo "#########################";
     }

    html文件中,只需要输出个分页就好了

    然后运行

    再点击第二页

    第三页四页都可以点击

    看一下cache目录下的文件

    每个分页的内容都被保存下来了

    30秒内刷新走的都是缓存文件

    无论分多少页都可以

     

    展开全文
  • 刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片,自己就想着作为一个码农,可以这些图片都爬取下来做成一个微信小程序,说干就干,了解一下基本都知道怎么做了,整理分享一波给...
        

    前言

    周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片,自己就想着作为一个码农,可以把这些图片都爬取下来做成一个微信小程序,说干就干,了解一下基本都知道怎么做了,整理分享一波给大家。

    目录:

    • 安装node,并下载依赖
    • 搭建服务
    • 请求我们要爬取的页面,返回json

    安装node
    我们开始安装node,可以去node官网下载node下载地址,下载完成后运行node使用,

       node -v

    安装成功后会出现你所安装的版本号。

    接下来我们使用node, 打印出hello world,新建一个名为index.js文件输入
    console.log('hello world')
    运行这个文件

    node index.js

    就会在控制面板上输出hello world
    搭建服务器
    新建一个·名为node的文件夹
    首先你需要下载express依赖

    npm install express 

    在新建一个名为demo.js的文件
    目录结构如图:
    图片描述
    在demo.js引入下载的express

    const express = require('express');
    const app = express();
    app.get('/index', function(req, res) {
    res.end('111')
    })
    var server = app.listen(8081, function() {
        var host = server.address().address
        var port = server.address().port
        console.log("应用实例,访问地址为 http://%s:%s", host, port)
    
    })

    运行node demo.js简单的服务就搭起来了,如图:
    图片描述
    请求我们要爬取的页面
    首先下载需要的依赖

    npm install superagent
    npm install superagent-charset
    npm install cheerio

    superagent 是用来发起请求的,是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下.,也可以使用http发起请求
    superagent-charset防止爬取下来的数据乱码,更改字符格式
    cheerio为服务器特别定制的,快速、灵活、实施的jQuery核心实现.。
    安装完依赖就可以引入了

    var superagent = require('superagent');
    var charset = require('superagent-charset');
    charset(superagent);
    const cheerio = require('cheerio');

    引入之后就请求我们的地址,https://www.qqtn.com/tx/weixi...

    const baseUrl = 'https://www.qqtn.com/'

    这些设置完之后就是发请求了,接下来请看完整代码demo.js

    var superagent = require('superagent');
    var charset = require('superagent-charset');
    charset(superagent);
    var express = require('express');
    var baseUrl = 'https://www.qqtn.com/'; //输入任何网址都可以
    const cheerio = require('cheerio');
    var app = express();
    app.get('/index', function(req, res) {
        //设置请求头
        res.header("Access-Control-Allow-Origin", "*");
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
        res.header('Access-Control-Allow-Headers', 'Content-Type');
        //类型
        var type = req.query.type;
        //页码
        var page = req.query.page;
        type = type || 'weixin';
        page = page || '1';
        var route = `tx/${type}tx_${page}.html`
            //网页页面信息是gb2312,所以chaeset应该为.charset('gb2312'),一般网页则为utf-8,可以直接使用.charset('utf-8')
        superagent.get(baseUrl + route)
            .charset('gb2312')
            .end(function(err, sres) {
                var items = [];
                if (err) {
                    console.log('ERR: ' + err);
                    res.json({ code: 400, msg: err, sets: items });
                    return;
                }
                var $ = cheerio.load(sres.text);
                $('div.g-main-bg ul.g-gxlist-imgbox li a').each(function(idx, element) {
                    var $element = $(element);
                    var $subElement = $element.find('img');
                    var thumbImgSrc = $subElement.attr('src');
                    items.push({
                        title: $(element).attr('title'),
                        href: $element.attr('href'),
                        thumbSrc: thumbImgSrc
                    });
                });
                res.json({ code: 200, msg: "", data: items });
            });
    });
    var server = app.listen(8081, function() {
    
        var host = server.address().address
        var port = server.address().port
    
        console.log("应用实例,访问地址为 http://%s:%s", host, port)
    
    })

    运行demo.js就会返回我们拿到的数据,一个简单的node爬虫就完成了,如图:
    1652dd838e956f0a?imageslim
    希望可以到 项目node爬虫 上点一个 star 作为你对这个项目的认可与支持,谢谢。

    展开全文
  • 1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的 Grace Murray Hopper大奖并成为ACM院士(立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。...
  • C++程序设计语言(特别版)--源代码

    热门讨论 2012-04-23 07:33:51
    1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的 Grace Murray Hopper大奖并成为ACM院士(立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。...
  • 1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的 Grace Murray Hopper大奖并成为ACM院士(立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。...
  • 其实网页何尝不是一种程序呢?) 正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式...
  • 如官方开发了一个程序,有自己的一套设置流程和方法,但是我觉得官方这个设置方法有点繁琐,这时我想通 过官方提供的API接口自己开发一个工具,某一套设置流程做成一个“按钮”的形式来完成,这个节目可以是网页...
  • 嗨!培训网源代码.rar

    2019-07-05 18:07:55
    9.本站中重点是课程比较,可以自己要比较的课程保存到Cookie中,所以随便怎么分页数据都还在,这里是用js编写的,值得大家参考。 申明: 1.本站是自主开发,并不是开发CMS方便大家使用,因此你使用本程序的时候...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要 AnsiString 替换 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

怎么把网页做成小程序