使用wget缓存


8

我使用drupal7。清除缓存后,使用wget这样将所有页面缓存回去。

wget --quiet http://xxx.xxx/sitemap.xml --output-document - | egrep -o "http://xxx.xxx[^<]+" | wget -q --delete-after -i -

完成后,我签入数据库cache_page表,所有页面似乎都在那里。但是,如果我使用浏览器访问任何页面,则需要花费一些时间,就像未预先缓存一样。我还注意到,在浏览器中访问该页面之后,下次访问的加载时间非常快。

问题可能是什么?我在Drupal 6页面上成功使用了此方法,没有任何问题。错误日志不显示任何内容,但favicon.ico不存在。

URL的访问日志如下所示:

www.xxx.sk 11.116.206.232--[01 / Jan / 2013:18:09:12 +0100]“ GET / myurl HTTP / 1.1” 200 31532“-”“ Wget / 1.13.4(cygwin)”

我尚未登录

编辑:我将drupal 7.14更新为7.19版本,但没有更改。在查看cache_page表之后,我注意到使用浏览器访问的所有页面都是出于某种奇怪的原因生成的,最后以_900生成,例如:www.example.com/examplepath_900。我以前没有注意到它,因为路径不适合数据库表中的单元格。这就是为什么页面不被缓存的原因。另外,我在同一主机上设置了drupal 7的全新安装,使用wget进行缓存可以按预期工作,而没有任何问题。htaccess或设置文件中也没有问题。也许某些已安装的模块可能会导致这种情况?


您是从哪里来的?同一台服务器还是另一台服务器?
mpdonadio

@MPD我使用cygwin终端运行wget。但是,我的drupal 7页面由另一个提供商托管,该提供商是我的drupal 6网站
loparr 2013年

您可以查看HTTP标头吗?运行脚本后,检查标题并查找类似于“ X-Drupal-Cache:Hit”的标题。不过,我忘记了确切的标题名称。
mpdonadio

@MPD我清除了缓存,运行了脚本,cache_page表显示了所有链接,但是我在所有新访问页面的标题中发现了X-Drupal-Cache:MISS。
loparr

您是否正在以经过身份验证的用户身份进行测试?如果是这样,将不会命中页面缓存。
大卫·托马斯

Answers:


3

所有现代浏览器都会发送一些Accept-Encoding〜'gzip'标头,因此如果您的蜘蛛不使用该条目,则不会使用缓存的条目(体面的后端生成gzip压缩响应会增加一个变化:Accept-Encoding标头)。您也可以查看wget的--mirror选项,在这里可以提供帮助。


如果webkenny对Drupal的性能说了些话,那么我认为这是真的。+1。
Letharion

1
对于核心,gzip标头应该无关紧要。
drupal_serve_page_from_cache

3

肯尼的建议是坚定的。另一个想法是,您可能有多个资产在第一次加载时被缓存在浏览器中,而在第二次加载时没有。与其在同一浏览器中进行测试,不如尝试在Chrome Incognito窗口中进行测试,然后关闭该窗口,然后再次进行。那应该有助于确定是Drupal页面缓存未能满足请求(可能是由于Gzip的想法)导致的缓慢,或者是文件的浏览器缓存导致文件不再下载,这使得第二个请求更快。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.