gpt4 book ai didi

php - 如何使用 PHP 保存和维护 javascript 文件的本地副本(考虑到并行性)?

转载 作者:行者123 更新时间:2023-11-30 06:44:29 25 4
gpt4 key购买 nike

我所追求的是一个 PHP 脚本,它将提供存储在不同域中的 javascript 文件的本地副本,例如用于跟踪目的的 JS 文件,例如 Google Analytics,或者在我的例子中是 Wordpress Stats。

本意是在自己的里面添加如下:

 mysite.com/somepath/wpstats.js.php?w=201145

(其中“w=year-week_number”的使用方式与 wordpress.com 的使用方式相同。原始统计 JS 文件的缓存有效期为一年 - 因此 JS 文件的更改频率永远不会超过每周一次)

在我的 wpstats.js.php 中,我想在 w=xx 更改时从 wordpress.com 下载正确的文件,否则我想从本地保存的副本中返回它。

我可以用一个名为“w_current”的内部变量来实现它,这样当新访问者在第二周进入网站时 w != w_current 就会触发新的抓取。问题是:如何防止当两个网站访问者在第二周第一次同时加载网站时可能出现的竞争条件/并行问题 [1]?

[1] 两个 apache 进程都评估 w != w_current 并开始两次下载(可能)新版本的 wpstats.js 文件,并且都尝试将其写入本地副本(例如 own_wpstats.js)wpstats.js.php(在本地副本已存在的正常情况下)将包括:

if ($_GET["w"] == w_current) require("own_wpstats.js");

这样做的主要原因(性能可能是另一个原因)是因为 Wordpress.com Stats(通过 DOM)注入(inject)了一个来自第三方 quantserve.com 的附加 JS 跟踪文件。在我本地保存的“WP JS 文件”中,我将确保排除这个 quantserve.com 的东西,但这是一个单独的编程挑战,而不是我在这里尝试提出的问题。搜索“quantserve.com tracking cookie”会得到许多令人不适的结果。

最佳答案

我不会太多担心这样的竞争条件。 “最坏情况”是您下载文件两次。

但是如果您打算在数据库中对这些文件进行任何跟踪,那么防止重复下载会很简单。在开始下载之前,如果文件需要刷新,请立即检查数据库,将刷新记录到数据库,然后进行下载。给文件一个唯一的主键(site_url + file_name),更新前的第二次检查将失败。

关于php - 如何使用 PHP 保存和维护 javascript 文件的本地副本(考虑到并行性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com