javascript - 通过 Javascript/PHP 更快地阅读 RSS

标签 javascript php jquery performance rss

今天为大家带来了另一件有趣的事情。

我有工作代码,可以从各种 RSS 提要中提取数据,并按其中最新发布日期对它们进行排序。

我遇到的问题是它很慢。它会减慢网站的加载速度。不仅如此,因为它都是托管服务器端,所以如果多人同时访问该站点,它会减慢响应速度。

所以,我想将其转换为 JavaScript 函数,然后将标签的 innerHTML 填充为从数据库中提取的内容,或者我希望任何人建议的另一个选项(如果它更快)。

言归正传:代码:

PHP

function RSSFeeder() {
    $client = buildCon();
    //Query removed, simply gets the RSS URL from the database
    $query = "";
    $result = $client ->run($query);
    $RSSList = array();
    foreach($result ->getRecords() as $record)
    {
        $ComicArray = array();
        $ComicName = $record ->value('Name');
        $RSS = $record ->value('RSS');
        $URL = $record ->value('URL');
        $content = file_get_contents($RSS);
        $x = new SimpleXmlElement($content);
        for ($i = 0; $i < 1; $i++) {
            $profile = $x ->channel ->item[$i];
            $pubDate = $profile ->{ "pubDate"};
        }
        $ComicArray['URL'] = $URL;
        $ComicArray['Comic'] = $ComicName;
        $ComicArray['pubDate'] = $pubDate;
        $RSSList[] = $ComicArray;
    }

    #usort($RSSList, "sortFunction");
    usort($RSSList, "compareRSSTimes");

    return $RSSList;
}

最后,您可能看到了 usort 方法,所以这里是:

function compareRSSTimes($a, $b) {
    $a = strtotime($a['pubDate']);
    $b = strtotime($b['pubDate']);

    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}

从那里,数组被发送回 PHP 脚本,该脚本根据更新的时间顺序构建输出。效果很好。加载页面只需要一点时间,如果/当更多用户访问该页面时,我担心我的 terribad 服务器的可持续性。

建议?

最佳答案

您可能可以经常这样做,而不是每次都这样做。如果无法使用数据库,则使用仅将“重要位”包装在缓存文件存储中的老式方法可以非常快速地工作。

一个例子:

function RSSFeeder() {
    $cachefile = '/path/to/RSSList.json';// <- must be local server path, not a URL
    if (filemtime($cachefile) < strtotime('now -1 minute')) {
        // if stale, rebuild it

        // .. do your normal building of the $RSSList here ..

        file_put_contents($cachefile,json_encode($RSSList));
        return $RSSList;
    } else {
        // else output cache
        return json_decode(file_get_contents($cachefile),true);
    }
}

它可能会更优雅......或者使用一个臃肿的功能齐全的库来做同样的事情。

但是这有效,是 self 修复的,仅在需要时更新,不需要 cron 作业,并且比打开数据库连接、查询数据库和输出存储的数据快一点...但是不够大。所以你的偏好在那里更重要。

关于javascript - 通过 Javascript/PHP 更快地阅读 RSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47720467/

相关文章:

javascript - 如何在 JavaScript(Google Chart) 中使用 Angular JS 数据?

php - Magento - 从数据库手动将订单从 1.4 迁移到 1.7

javascript - 100% 高度的 div 被另一个 div 淡入覆盖

javascript - 如何在加载期间收到错误时继续执行 javascript

php - 尝试使用 phpMyAdmin 创建 Doctrine 数据库时出错

jquery - 使用 jQuery 的悬停状态

javascript - 如何在滑动面板中制作嵌套列表?

javascript - Mongoskin 查询使用变量作为查询键检查文档 $ 是否存在

javascript - HTML5 Canvas 使黑色透明

php - 面向对象的 PHP 中的非阻塞 HTTP 请求?