iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >squid如何强制缓存动态页面
  • 760
分享到

squid如何强制缓存动态页面

2023-06-13 05:06:25 760人浏览 薄情痞子
摘要

squid如何强制缓存动态页面,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。其实我本不想写这个标题,我的本意是缓存yupoo api的查询数据,这个过程中找到了

squid如何强制缓存动态页面,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

其实我本不想写这个标题,我的本意是缓存yupoo api的查询数据,这个过程中找到了参考方法(Caching Google Earth with Squid)。呵呵,所以偶也来一回标题党。

这篇参考流传非常广,Digg上也被提过,我也不知道原出处是哪里了。

可是。。。。你按照它的指示设置,它并不能正确工作!!

话说回来,先说说我的需求。

最近yupoo的访问速度很慢,我有一堆api请求经常无法完成,猜测要么对方限制了同一ip的连接数,要么是yupoo又遇到了新一轮的流量瓶颈。跟Yupoo的zola联系后,确认是他们的负荷太高引起的,并没有限制连接数。所以我要想办法在我这边做一些缓存了。

因为我这边本身就是用squid代理来解决ajax中调用API的跨域问题的,所以自然是目标瞄准了squid的配置文件。

yupoo api的请求地址是 www.yupoo.com/api/rest/?method=xx&xxxxxxx...

大家都知道squid会自动缓存静态文件,可对于这种动态网页怎么让它也缓存起来呢,所以在google上找啊找,找到上面提得那片缓存Google Earth的博客文章。
他的方法是:

acl QUERY urlpath_regex cgi-bin \? intranet
acl forcecache url_regex -i kh.google keyhole.com
no_cache allow forcecache
no_cache deny QUERY

# ----
refresh_pattern -i kh.google 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload

refresh_pattern -i keyhole.com 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload

原理就是用 no_cache allow 和 refresh_pattern 来设定一些缓存规则,将google earth的请求强行缓存起来。

此文一出,自然早有人去验证,可是没人成功,原作者也音讯全无  ... squid的邮件列表里也提到。 ( 看标题进来的朋友,不要急,继续往下读,不会让你空手而回的  )

我也没在意,估计人家功力问题  。先试着用改写一下解决yupoo api的缓存问题。

acl QUERY urlpath_regex cgi-bin \?
acl forcecache url_regex -i yupoo\.com
no_cache allow forcecache
no_cache deny QUERY

refresh_pattern -i yupoo\.com 1440 50% 10080 override-expire override-lastmod reload-into-ims ignore-reload

嘿,果然nnd毫无用处,访问记录里还是 一坨坨 tcp_MISS

于是翻来覆去看文档,找资料,发现是squid的bug惹得祸,不过早已经修正(严格来说是功能扩展补丁)。

我的squid是2.6.13,翻了一下源代码,确实已经打好补丁了。

解决这个问题需要refresh_pattern的几个扩展参数(ignore-no-cache ignore-private),这几个参数在squid的文档和配置例子中均没有提到,看来squid还不够与时俱进。

下面讲一下问题所在。

先看看yupoo api返回的Http头部信息(cache 相关部分)

Cache-Control: no-cache, must-revalidate
Pragma: no-cache

这两行是控制浏览器的缓存行为的,指示浏览器不得缓存。squid也是遵循RFC的,正常情况下自然不会去缓存这些页面。override-expire override-lastmod reload-into-ims ignore-reload 统统不能对付它。

而那个补丁正是对付这两个Cache-Control:no-cache 和 Pragma: no-cache的。

因此把 refresh_pattern那句要改写成

refresh_pattern -i yupoo\.com 1440 50% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private

这样就大功告成了, squid -k reconfigure 看看 access.log ,这回里面终于出现
TCP_HIT/200 TCP_MEM_HIT/200 了,说明缓存规则确实起作用了,那个激动啊 555~~~~

====================
补充:
后来我看了一下google earth 服务器 hk1.google.com的HTTP头部,只有

Expires: Wed, 02 Jul 2008 20:56:20 GMT
Last-Modified: Fri, 17 Dec 2004 04:58:08 GMT

,这么看来照理不需ignore-no-cache ignore-private也能工作,可能是作者这里写错了
kh.google 应该是 kh.\.google才对。

最后总结一下,缓存Google Earth/Map的正确的配置应该是

acl QUERY urlpath_regex cgi-bin \? intranet
acl forcecache url_regex -i kh.\.google mt.\.google mapgoogle\.mapabc keyhole.com
no_cache allow forcecache
no_cache deny QUERY

# ----
refresh_pattern -i kh.\.google 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private
refresh_pattern -i mt.\.google 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private
refresh_pattern -i mapgoogle\.mapabc 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private

refresh_pattern -i keyhole.com 1440 20% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private

注:
khX.google.com 是google earth的图片服务器
mtX.google.com 是google map 的图片服务器
mapgoogle.mapabc.com 是google ditu的图片服务器
http://nukq.malmam.com/arcHives/16

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: squid如何强制缓存动态页面

本文链接: https://www.lsjlt.com/news/265611.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • squid如何强制缓存动态页面
    squid如何强制缓存动态页面,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。其实我本不想写这个标题,我的本意是缓存yupoo api的查询数据,这个过程中找到了...
    99+
    2023-06-13
  • 缓存的魔力:ASP 页面片段缓存如何增强用户体验
    缓存是一种用于存储和检索数据的临时存储,在 ASP.NET Web 应用程序中尤其有用。它可以通过减少数据库查询频繁、动态内容处理所需的时间来提高应用程序性能。页面片段缓存是一种更精细的缓存策略,它可以缓存 Web 页面的特定部分,而不...
    99+
    2024-03-05
    ASP、页面片段缓存、用户体验、延迟优化、性能提升
  • html5页面如何强制横屏
    设置html5页面强制横屏的方法具体方法如下:可以通过在页面head区域中添加meta标签,设置强制横屏。1)设置UC浏览器强制横屏<meta name="full-screen" content="ye...
    99+
    2024-04-02
  • 如何解决vue项目动态设置页面title及是否缓存页面的问题
    小编给大家分享一下如何解决vue项目动态设置页面title及是否缓存页面的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!跟传...
    99+
    2024-04-02
  • jQuery如何动态控制页面字体大小
    小编给大家分享一下jQuery如何动态控制页面字体大小,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!动态控制页面字体大小用户可以改变页面字体大小$(document).ready(func...
    99+
    2024-04-02
  • Android中如何实现移动端页面强制竖屏
    小编给大家分享一下Android中如何实现移动端页面强制竖屏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近工作中写了一个移动端的页面,本来是没什么的,但是有一...
    99+
    2023-06-08
  • 缓存之争:ASP 页面片段缓存与其他缓存机制比较
    ASP 页面片段缓存是一种服务器端缓存机制,它将动态生成的页面片段存储在内存中,从而避免在每次请求时重新生成这些片段。这可以显著提升网站性能,因为生成动态内容往往是最耗时的任务之一。 ASP 页面片段缓存的优点 减少数据库访问: 由于...
    99+
    2024-03-05
    ASP 页面片段缓存、缓存机制、网站性能、响应时间、用户体验
  • 如何优化PHP开发中的缓存和页面静态化
    随着互联网的快速发展,网站的访问量越来越大,访问速度成为用户体验的重要因素之一。而对于PHP开发来说,缓存和页面静态化是提高网站性能的重要手段。本文将介绍如何优化PHP开发中的缓存和页面静态化,同时给出具体的代码示例。缓存的作用和种类缓存是...
    99+
    2023-10-21
    缓存(Cache) 优化(Optimize) 静态化(staticization)
  • javascript如何制作动态网页
    在现代前端开发中,JavaScript 是一个不可或缺的角色。它为我们提供了无穷无尽的可能性,使网页能够根据用户的行为、需求动态地改变。JavaScript 动态网页是指网页可以动态的显示、隐藏、改变内容、添加元素等等。本文将介绍如何使用 ...
    99+
    2023-05-14
  • vue如何监听页面缓存事件
    目录监听页面缓存事件事情的起因是这样的监听缓存事件代码在main创建缓存事件在组件生命周期中在组件业务代码监听页面缓存事件 事情的起因是这样的 项目中需要用到websocket,在网...
    99+
    2024-04-02
  • 如何解决vue页面缓存问题
    这篇文章给大家分享的是有关如何解决vue页面缓存问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。比如有一个列表页面,然后列表每项都有一个详情,之前用vue1.x的时候,页面缓存...
    99+
    2024-04-02
  • vue如何使用keep-alive缓存页面
    这篇文章主要介绍vue如何使用keep-alive缓存页面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!keep-alive缓存页面比如在表单输入页面进入下一步后,再返回上一步到表单页时要保留表单输入的内容、比如在列...
    99+
    2023-06-26
  • 缓存时代:ASP 页面片段缓存的优势与限制
    ASP 页面片段缓存的优势 提高性能:缓存页面片段可以大幅减少服务器请求,从而提高网站加载速度和页面的响应时间。 降低服务器负载:通过缓存频繁访问的页面片段,可以减轻服务器的负担,使其能够处理更多请求。 改善用户体验:快速的加载时间可...
    99+
    2024-02-21
    ASP.NET 页面缓存 输出缓存 片段缓存 HTML 片段缓存
  • web开发中如何禁止页面缓存
    这篇文章主要介绍了web开发中如何禁止页面缓存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html只要加在头部就可以了.<HEAD&...
    99+
    2024-04-02
  • springboot如何使用thymeleaf完成页面缓存
    目录使用thymeleaf完成页面缓存直接看Demo控制层核心点是thymeleaf简要基础知识 1.SpringBoot可整合的模板引擎技术2.Thymeleaf常用标签...
    99+
    2024-04-02
  • Vue TypeScript与Vue Router:强强联手,打造动态单页面应用
    Vue TypeScript与Vue Router概述 Vue TypeScript是Vue.js框架的TypeScript版本。它允许开发人员使用TypeScript来编写Vue.js组件,从而提高代码的可读性、可维护性和可重用性。V...
    99+
    2024-02-09
    Vue TypeScript Vue Router 单页面应用 SPA 动态应用 路由
  • 如何在PHP项目中实现数据缓存和页面静态化?
    如何在PHP项目中实现数据缓存和页面静态化?随着互联网的快速发展,网站访问量不断增加,如何提高网站的性能成为了开发人员共同面临的问题。在PHP项目中,数据缓存和页面静态化是两种常见的性能优化方法。本文将介绍如何在PHP项目中实现数据缓存和页...
    99+
    2023-11-02
    - PHP (编程语言) 数据缓存: - Cache (缓存) - Implementation (实现) 页面静态化:
  • 用javascript制作qq注册动态页面
    目录一.前言1. 基础布局2. 自动切换图片3. 添加内容4. 自动缩放,控件的显示和隐藏5.响应用户输入操作一.前言 我们来看如何用html写一个注册页面并使用js加载用户输入响应...
    99+
    2024-04-02
  • 小程序页面如何动态取值
    使用detailConfirm: function(e)方式实现动态取值实现相应的多个Confirm方式{ var detail = e.detail.value;}realnameConfirm:&...
    99+
    2024-04-02
  • MyBatis 动态SQL和缓存机制实例详解
    有的时候需要根据要查询的参数动态的拼接SQL语句常用标签:- if:字符判断- choose【when...otherwise】:分支选择- trim【where,set】:字符串截取,其中where标签封装查询条件,s...
    99+
    2023-05-31
    mybatis 动态sql 缓存机制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作