From patchwork Mon Oct 7 16:24:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukas Fleischer X-Patchwork-Id: 1267 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 1A8A21445B28E for ; Mon, 7 Oct 2019 16:24:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on apollo X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01 autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-BL-Results: [127.0.9.2] [127.0.0.11] Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Mon, 7 Oct 2019 16:24:18 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 6D69215AF8D26B; Mon, 7 Oct 2019 16:24:11 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [5.9.250.164]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS; Mon, 7 Oct 2019 16:24:11 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 4CDFB2CB4C; Mon, 7 Oct 2019 16:24:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1570465451; bh=XQ/CzAEa0Fz2y6QJodtp1BTHEFIuNtlm3pnAfvqwd3g=; h=From:To:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe; b=rRRnrCZTMrr3ohiA+MurzWMmgS9Uj/MtbKHZpXhEX+J1swXEEV/iFGawB1GCHUxOG IftQyZ9lvusaF0umCFvMPgUaIDoeDzILcxR/DJaJKUOGCJouKtoCbgkD/9gu6Z+A4c dARtDeddagKoqb2KUyaxtLygo/aF355Ni7gHbBtHlHXSTaBz0lQTqNrC2FzLaD1MWn kUNsF82fioTXDT2zclnD9CS3CpZ7lfB1+IbgiEaEsyfBuPaXh09xHUjAhcAnyjLFYl +DP+r7ZPo0+ET7tiHckpEZWgFgOFn1FIEBBj7oL9jPl62MLh+A7mOi0Diu5DQ3Gh2a XPy2Wnihzu5KFWTNs/dppKq5a26NC8yHiENxOj4Rbw1zpXXYd/2Ois/EhgyFs/GR+U dUv6NLTLrKogEFhRoUJT9n/WGejjSkBMDsEqPTJyfeBt6DsKJg+vW35PzGOSmfrRln F0X6w5kV3WiJmC0Yk7w0qfwaSXcZkkynysUSfmWvSjc2uz0SkeOJMFMtkgg1iKIxO0 W/eDSQaFuHlMmLYxYUA+l02lchBuLDH7TQwuylXJNMQHjdoqVdXXrPwMoNHmUye0Bi YheUi8g6t9E5aBnXlcax/ipOAVOKrRZmQZ+/bpRElihGrSNIaCUBDhw9ML7zecCRRN 7HZ/U84L8KRb/wQ3jzW5GXDk= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 66BE72CB31 for ; Mon, 7 Oct 2019 16:24:08 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by luna.archlinux.org (Postfix) with ESMTPS for ; Mon, 7 Oct 2019 16:24:08 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id B6A3515AF8D268 for ; Mon, 7 Oct 2019 16:23:58 +0000 (UTC) Received: from localhost (wn-campus-nat-129-97-124-143.dynamic.uwaterloo.ca [129.97.124.143]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: lfleischer) by orion.archlinux.org (Postfix) with ESMTPSA id 56F6215AF8D267 for ; Mon, 7 Oct 2019 16:23:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1570465438; bh=XQ/CzAEa0Fz2y6QJodtp1BTHEFIuNtlm3pnAfvqwd3g=; h=From:To:Subject:Date; b=TOV2Rs6VJNhRabO/Ic3yCIn/jadbIR9HfFRrHSbDEEeAoygS7Xihq/zl49veyIfVx Ria3bzOzZpu6f63CGOacKmHKaHNbDJO7uSc8HzrsEID/0vovS4Og+ZY4ne2RC4lAb1 6dYIQSY82du3gALKmIj8WlDqtbwjpKvinzcnI8M4lwenLIwx8Xo6H0Lv6mzN3rDAq/ eEv4svgC3ksZORL4Bvud4vz79zUwSdtMZcDpmXZxve013JU068ilaBsSbTVfRDJSjR ABvgAHdkbryFR9bqeMZfzev1fgdyUAjr0yvkyu4Iy9H8D58m1Qn9Tk6lTZaKKskcQ3 gVn9VdBEhEYahi9AuRIC8WsccUmmqYZnwiWJi/Oe9MYSTKkSdQshGUtuI8wVHNB+Iz QP4GmxWT5fdqCykat7n9CzTAvvoq4tdvsO/qKLEghJL44SL2+HSK1CUcajBtnWEqcp FSJcjZPeW123VZl8ruD4uFSRWNKfVHe0yXihbO9MTW7aCHMGB7sLzGi/6CiAURTja2 7Mx2Kfs73/NsYnf5isA7UvEPzBZheXoAhKo3VLAQSZUZCiEKW/yaXnPKdFjb1HVtJy 5auUXbY3grSygAzKVJrN5z6wp8ksYdNJztMQKWCIaEXDzjYMOGHpy55Gk1jU3oAkTS d/GzmgvhjgrruB2YzDUKgDSY= From: Lukas Fleischer To: aur-dev@archlinux.org Subject: [PATCH] Make package details cache TTL configurable Date: Mon, 7 Oct 2019 12:24:19 -0400 Message-Id: <20191007162419.50742-1-lfleischer@archlinux.org> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-BeenThere: aur-dev@archlinux.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Arch User Repository \(AUR\) Development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: aur-dev-bounces@archlinux.org Sender: "aur-dev" The TTL for package details can be much longer than for generic values since they never change. Note that when an update is pushed via Git, all packages belonging to that package base are deleted and new packages are created. Signed-off-by: Lukas Fleischer --- conf/config.defaults | 1 + web/lib/aurjson.class.php | 6 ++++-- web/lib/pkgfuncs.inc.php | 15 ++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/conf/config.defaults b/conf/config.defaults index c8bc3a7..c519eae 100644 --- a/conf/config.defaults +++ b/conf/config.defaults @@ -38,6 +38,7 @@ render-comment-cmd = /usr/local/bin/aurweb-rendercomment localedir = /srv/http/aurweb/aur.git/web/locale/ # memcache or apc cache = none +cache_pkginfo_ttl = 86400 memcache_servers = 127.0.0.1:11211 [ratelimit] diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php index bfb8cd1..1c31a65 100644 --- a/web/lib/aurjson.class.php +++ b/web/lib/aurjson.class.php @@ -292,7 +292,8 @@ class AurJSON { "FROM Licenses INNER JOIN PackageLicenses " . "ON PackageLicenses.PackageID = " . $pkgid . " " . "AND PackageLicenses.LicenseID = Licenses.ID"; - $rows = db_cache_result($query, 'extended-fields:' . $pkgid, PDO::FETCH_ASSOC); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + $rows = db_cache_result($query, 'extended-fields:' . $pkgid, PDO::FETCH_ASSOC, $ttl); $type_map = array( 'depends' => 'Depends', @@ -315,7 +316,8 @@ class AurJSON { $query = "SELECT Keyword FROM PackageKeywords " . "WHERE PackageBaseID = " . intval($base_id) . " " . "ORDER BY Keyword ASC"; - $rows = db_cache_result($query, 'keywords:' . intval($base_id)); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + $rows = db_cache_result($query, 'keywords:' . intval($base_id), PDO::FETCH_NUM, $ttl); $data['Keywords'] = array_map(function ($x) { return $x[0]; }, $rows); } diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index be4bb06..b5035df 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -165,7 +165,8 @@ function pkg_licenses($pkgid) { $q = "SELECT l.Name FROM Licenses l "; $q.= "INNER JOIN PackageLicenses pl ON pl.LicenseID = l.ID "; $q.= "WHERE pl.PackageID = ". $pkgid; - $rows = db_cache_result($q, 'licenses:' . $pkgid); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + $rows = db_cache_result($q, 'licenses:' . $pkgid, PDO::FETCH_NUM, $ttl); return array_map(function ($x) { return $x[0]; }, $rows); } @@ -184,7 +185,8 @@ function pkg_groups($pkgid) { $q = "SELECT g.Name FROM `Groups` g "; $q.= "INNER JOIN PackageGroups pg ON pg.GroupID = g.ID "; $q.= "WHERE pg.PackageID = ". $pkgid; - $rows = db_cache_result($q, 'groups:' . $pkgid); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + $rows = db_cache_result($q, 'groups:' . $pkgid, PDO::FETCH_NUM, $ttl); return array_map(function ($x) { return $x[0]; }, $rows); } @@ -208,7 +210,8 @@ function pkg_providers($name) { $q.= "UNION "; $q.= "SELECT 0, Name FROM OfficialProviders "; $q.= "WHERE Provides = " . $dbh->quote($name); - return db_cache_result($q, 'providers:' . $name); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + return db_cache_result($q, 'providers:' . $name, PDO::FETCH_NUM, $ttl); } /** @@ -231,7 +234,8 @@ function pkg_dependencies($pkgid, $limit) { $q.= "LEFT JOIN DependencyTypes dt ON dt.ID = pd.DepTypeID "; $q.= "WHERE pd.PackageID = ". $pkgid . " "; $q.= "ORDER BY pd.DepName LIMIT " . intval($limit); - return db_cache_result($q, 'dependencies:' . $pkgid); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + return db_cache_result($q, 'dependencies:' . $pkgid, PDO::FETCH_NUM, $ttl); } /** @@ -251,7 +255,8 @@ function pkg_relations($pkgid) { $q.= "LEFT JOIN RelationTypes rt ON rt.ID = pr.RelTypeID "; $q.= "WHERE pr.PackageID = ". $pkgid . " "; $q.= "ORDER BY pr.RelName"; - return db_cache_result($q, 'relations:' . $pkgid); + $ttl = config_get_int('options', 'cache_pkginfo_ttl'); + return db_cache_result($q, 'relations:' . $pkgid, PDO::FETCH_NUM, $ttl); } /**