mirror of
https://github.com/System-End/github-readme-stats.git
synced 2026-04-19 16:38:23 +00:00
feature: extend default card cache time to 6 hours (#3242)
* feature: extend default card cache time to 8 hours * reduce to six hours
This commit is contained in:
parent
eb787af325
commit
2ee803fc16
9 changed files with 45 additions and 33 deletions
|
|
@ -34,8 +34,8 @@ export default async (req, res) => {
|
|||
const gistData = await fetchGist(id);
|
||||
|
||||
let cacheSeconds = clampValue(
|
||||
parseInt(cache_seconds || CONSTANTS.FOUR_HOURS, 10),
|
||||
CONSTANTS.FOUR_HOURS,
|
||||
parseInt(cache_seconds || CONSTANTS.SIX_HOURS, 10),
|
||||
CONSTANTS.SIX_HOURS,
|
||||
CONSTANTS.ONE_DAY,
|
||||
);
|
||||
cacheSeconds = process.env.CACHE_SECONDS
|
||||
|
|
@ -52,7 +52,7 @@ export default async (req, res) => {
|
|||
const isBothOver1K = stars > 1000 && forks > 1000;
|
||||
const isBothUnder1 = stars < 1 && forks < 1;
|
||||
if (!cache_seconds && (isBothOver1K || isBothUnder1)) {
|
||||
cacheSeconds = CONSTANTS.FOUR_HOURS;
|
||||
cacheSeconds = CONSTANTS.SIX_HOURS;
|
||||
}
|
||||
|
||||
res.setHeader(
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ export default async (req, res) => {
|
|||
|
||||
let cacheSeconds = clampValue(
|
||||
parseInt(cache_seconds || CONSTANTS.CARD_CACHE_SECONDS, 10),
|
||||
CONSTANTS.FOUR_HOURS,
|
||||
CONSTANTS.SIX_HOURS,
|
||||
CONSTANTS.ONE_DAY,
|
||||
);
|
||||
cacheSeconds = process.env.CACHE_SECONDS
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ export default async (req, res) => {
|
|||
|
||||
let cacheSeconds = clampValue(
|
||||
parseInt(cache_seconds || CONSTANTS.CARD_CACHE_SECONDS, 10),
|
||||
CONSTANTS.FOUR_HOURS,
|
||||
CONSTANTS.SIX_HOURS,
|
||||
CONSTANTS.ONE_DAY,
|
||||
);
|
||||
cacheSeconds = process.env.CACHE_SECONDS
|
||||
|
|
@ -58,7 +58,7 @@ export default async (req, res) => {
|
|||
const isBothOver1K = stars > 1000 && forks > 1000;
|
||||
const isBothUnder1 = stars < 1 && forks < 1;
|
||||
if (!cache_seconds && (isBothOver1K || isBothUnder1)) {
|
||||
cacheSeconds = CONSTANTS.FOUR_HOURS;
|
||||
cacheSeconds = CONSTANTS.SIX_HOURS;
|
||||
}
|
||||
|
||||
res.setHeader(
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ export default async (req, res) => {
|
|||
|
||||
let cacheSeconds = clampValue(
|
||||
parseInt(cache_seconds || CONSTANTS.CARD_CACHE_SECONDS, 10),
|
||||
CONSTANTS.FOUR_HOURS,
|
||||
CONSTANTS.SIX_HOURS,
|
||||
CONSTANTS.ONE_DAY,
|
||||
);
|
||||
cacheSeconds = process.env.CACHE_SECONDS
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ export default async (req, res) => {
|
|||
|
||||
let cacheSeconds = clampValue(
|
||||
parseInt(cache_seconds || CONSTANTS.CARD_CACHE_SECONDS, 10),
|
||||
CONSTANTS.FOUR_HOURS,
|
||||
CONSTANTS.SIX_HOURS,
|
||||
CONSTANTS.ONE_DAY,
|
||||
);
|
||||
cacheSeconds = process.env.CACHE_SECONDS
|
||||
|
|
|
|||
|
|
@ -293,12 +293,12 @@ You can customize the appearance of all your cards however you wish with URL par
|
|||
* `bg_color` - Card's background color *(hex color)* **or** a gradient in the form of *angle,start,end*. Default: `fffefe`
|
||||
* `hide_border` - Hides the card's border *(boolean)*. Default: `false`
|
||||
* `theme` - Name of the theme, choose from [all available themes](./themes/README.md). Default: `default` theme.
|
||||
* `cache_seconds` - Sets the cache header manually *(min: 14400, max: 86400)*. Default: `14400 seconds (4 hours)`.
|
||||
* `cache_seconds` - Sets the cache header manually *(min: 21600, max: 86400)*. Default: `21600 seconds (6 hours)`.
|
||||
* `locale` - Sets the language in the card *(e.g. cn, de, es, etc.)*. Default: `en`.
|
||||
* `border_radius` - Corner rounding on the card. Default: `4.5`.
|
||||
|
||||
> [!WARNING]\
|
||||
> We use caching to decrease the load on our servers (see <https://github.com/anuraghazra/github-readme-stats/issues/1471#issuecomment-1271551425>). Our cards have a default cache of 4 hours (14400 seconds). Also, note that the cache is clamped to a minimum of 4 hours and a maximum of 24 hours.
|
||||
> We use caching to decrease the load on our servers (see <https://github.com/anuraghazra/github-readme-stats/issues/1471#issuecomment-1271551425>). Our cards have a default cache of 6 hours (21600 seconds). Also, note that the cache is clamped to a minimum of 6 hours and a maximum of 24 hours. If you want the data on your statistics card to be updated more often you can [deploy your own instance](#deploy-on-your-own) and set [environment variable](#disable-rate-limit-protections) `CACHE_SECONDS` to a value of your choosing.
|
||||
|
||||
##### Gradient in bg\_color
|
||||
|
||||
|
|
|
|||
|
|
@ -373,21 +373,30 @@ const noop = () => {};
|
|||
const logger =
|
||||
process.env.NODE_ENV !== "test" ? console : { log: noop, error: noop };
|
||||
|
||||
// Cache settings.
|
||||
const CARD_CACHE_SECONDS = 14400;
|
||||
const ERROR_CACHE_SECONDS = 600;
|
||||
const ONE_MINUTE = 60;
|
||||
const FIVE_MINUTES = 300;
|
||||
const TEN_MINUTES = 600;
|
||||
const FIFTEEN_MINUTES = 900;
|
||||
const THIRTY_MINUTES = 1800;
|
||||
const TWO_HOURS = 7200;
|
||||
const FOUR_HOURS = 14400;
|
||||
const SIX_HOURS = 21600;
|
||||
const EIGHT_HOURS = 28800;
|
||||
const ONE_DAY = 86400;
|
||||
|
||||
const CONSTANTS = {
|
||||
ONE_MINUTE: 60,
|
||||
FIVE_MINUTES: 300,
|
||||
TEN_MINUTES: 600,
|
||||
FIFTEEN_MINUTES: 900,
|
||||
THIRTY_MINUTES: 1800,
|
||||
TWO_HOURS: 7200,
|
||||
FOUR_HOURS: 14400,
|
||||
ONE_DAY: 86400,
|
||||
CARD_CACHE_SECONDS,
|
||||
ERROR_CACHE_SECONDS,
|
||||
ONE_MINUTE,
|
||||
FIVE_MINUTES,
|
||||
TEN_MINUTES,
|
||||
FIFTEEN_MINUTES,
|
||||
THIRTY_MINUTES,
|
||||
TWO_HOURS,
|
||||
FOUR_HOURS,
|
||||
SIX_HOURS,
|
||||
EIGHT_HOURS,
|
||||
ONE_DAY,
|
||||
CARD_CACHE_SECONDS: SIX_HOURS,
|
||||
ERROR_CACHE_SECONDS: TEN_MINUTES,
|
||||
};
|
||||
|
||||
const SECONDARY_ERROR_MESSAGES = {
|
||||
|
|
|
|||
|
|
@ -162,22 +162,25 @@ describe("Test /api/", () => {
|
|||
["Content-Type", "image/svg+xml"],
|
||||
[
|
||||
"Cache-Control",
|
||||
`max-age=${CONSTANTS.FOUR_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.FOUR_HOURS
|
||||
`max-age=${CONSTANTS.SIX_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.SIX_HOURS
|
||||
}, stale-while-revalidate=${CONSTANTS.ONE_DAY}`,
|
||||
],
|
||||
]);
|
||||
});
|
||||
|
||||
it("should set proper cache", async () => {
|
||||
const { req, res } = faker({ cache_seconds: 15000 }, data_stats);
|
||||
const cache_seconds = 35000;
|
||||
const { req, res } = faker({ cache_seconds }, data_stats);
|
||||
await api(req, res);
|
||||
|
||||
expect(res.setHeader.mock.calls).toEqual([
|
||||
["Content-Type", "image/svg+xml"],
|
||||
[
|
||||
"Cache-Control",
|
||||
`max-age=7500, s-maxage=${15000}, stale-while-revalidate=${
|
||||
`max-age=${
|
||||
cache_seconds / 2
|
||||
}, s-maxage=${cache_seconds}, stale-while-revalidate=${
|
||||
CONSTANTS.ONE_DAY
|
||||
}`,
|
||||
],
|
||||
|
|
@ -224,8 +227,8 @@ describe("Test /api/", () => {
|
|||
["Content-Type", "image/svg+xml"],
|
||||
[
|
||||
"Cache-Control",
|
||||
`max-age=${CONSTANTS.FOUR_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.FOUR_HOURS
|
||||
`max-age=${CONSTANTS.SIX_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.SIX_HOURS
|
||||
}, stale-while-revalidate=${CONSTANTS.ONE_DAY}`,
|
||||
],
|
||||
]);
|
||||
|
|
@ -239,8 +242,8 @@ describe("Test /api/", () => {
|
|||
["Content-Type", "image/svg+xml"],
|
||||
[
|
||||
"Cache-Control",
|
||||
`max-age=${CONSTANTS.FOUR_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.FOUR_HOURS
|
||||
`max-age=${CONSTANTS.SIX_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.SIX_HOURS
|
||||
}, stale-while-revalidate=${CONSTANTS.ONE_DAY}`,
|
||||
],
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -188,8 +188,8 @@ describe("Test /api/gist", () => {
|
|||
expect(res.setHeader).toBeCalledWith("Content-Type", "image/svg+xml");
|
||||
expect(res.setHeader).toBeCalledWith(
|
||||
"Cache-Control",
|
||||
`max-age=${CONSTANTS.FOUR_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.FOUR_HOURS
|
||||
`max-age=${CONSTANTS.SIX_HOURS / 2}, s-maxage=${
|
||||
CONSTANTS.SIX_HOURS
|
||||
}, stale-while-revalidate=${CONSTANTS.ONE_DAY}`,
|
||||
);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue