【问题标题】:URL Regex Matcher (Idea) [closed]URL正则表达式匹配器(想法)[关闭]
【发布时间】:2012-03-31 10:13:24
【问题描述】:

制作一个简单的正则表达式来查找网址会不会容易得多,然后再用另一个脚本来查看该站点是否发回数据?我一直想知道这是否比花费数年时间开发“完美”的 url 检测正则表达式更快、更容易的解决方案,只是在几天后将其粉碎。

如果有人可以找到基本页面访问/加载的速度测试,请在此处发布以帮助回答我的问题。

另外,在服务器上不断发出这样的请求有多难,比如说……每小时 100 次?

我将使用 Javascript 对此进行测试,使用 /(http|www\.)\S+/gim 作为正则表达式并使用 60 秒超时连接到请求的 url。我会从 url 做一个简单的"Title Grab",然后记录试用的时间。等我把速度全部搞定后,我会发布它们。

这真的不再是一个大问题了,所以如果你发现任何对我的上述想法有帮助的东西,你可能会收到这个“问题”的光荣 Answer Checkmark

【问题讨论】:

  • 这取决于您打算找到多少个 url,以及您愿意等待来自远程 Web 服务器的响应多长时间(可能启动、停止、缓慢、崩溃或其他任何情况) ...)
  • 一个完全有效的 url 可以给出 404。一个看似无效的 url 可能是正确的:http://en.wikipedia.org/wiki/// - “有效”和“给出 404”之间有很大的区别。
  • @GregHewgill 您可以使用超时检查器轻松修复这些问题。 @Kobi 如果您对 url 使用简单的正则表达式,例如 /(http\:\/\/|www\.)\S+/gim,那么您不应该遇到这些问题。

标签: php javascript regex url pagespeed


【解决方案1】:

我认为@Kobi 的观点是,一个 URL 的 validity 不同于该 URL 上资源的 presence。有效的 URL 可能不指向当前资源。例如,URL http://bclennox.com/there-is-no-page-at-this-address 将返回 404,即使它是一个完全有效的 URL,也可能无法通过您的测试。

无论如何,如果您主要对给定 URL 返回的 HTTP 状态感兴趣,您可以发出 HTTP HEAD 请求而不是普通的 GET。 HEAD 返回的负载要小得多(只有标头),这应该会大大加快您的请求。

这是一个使用curl的例子:

$ curl -I http://bclennox.com
HTTP/1.1 200 OK
Date: Thu, 15 Mar 2012 03:14:59 GMT
Server: Apache
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.9, Enterprise Edition
ETag: "39cf7d1099a034de95dda297b18bfa2d"
X-UA-Compatible: IE=Edge,chrome=1
X-Rack-Cache: miss
X-Runtime: 0.139410
X-Request-Id: 50ce319e403ef4e6e468c2f4b9817691
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: _master_session=BAh7ByIQX2NzcmZfdG9rZW4iMWZhM0t1dTZiNjVWV1Q3YzlKVTZmdjRwK0FiWlpHUExVWXJnRlovd2R5aU09Ig9zZXNzaW9uX2lkIiU3YWEzZmNhYmYzYTQ2MDgwNTY5ZmU5MjhlNWU3ZDhmMA%3D%3D--c0f8c2bd6cccb1ff12f28da996dddbb50e448f1f; path=/; HttpOnly
Status: 200
Content-Type: text/html; charset=utf-8

【讨论】:

  • GET HEAD 将是要走的路,尽管我认为有时会被缓存
  • 所以假设这只是http的使用,考虑到页面加载的时间,“url检查”方法是否比尝试制作“完美”正则表达式更适合?加载或任何实现?
  • 我仍然不完全确定您的要求是什么。如果您最关心的是存在,那么您的测试很好:对 HTTP URL 进行快速健全性检查,然后点击它并查看它的响应。但是,我建议通过 Ajax 或其他方式异步执行此操作,而不是强迫用户等待长达 60 秒的页面加载而没有反馈。
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多