如何解决缓存的难题
>网络缓存:网络开发的关键但又古怪的方面。 在您的浏览器和服务器之间是一个复杂的缓存网络,默默地优化了Internet流量。但是,如果不仔细管理,这个系统可能会引起令人困惑的矛盾。
>钥匙要点:
- > Web缓存在很大程度上依赖于HTTP状态代码和标题(例如
Last-Modified
>,Etag
和Cache-Control
)。Cache-Control
是至关重要的,提供诸如no-store
,no-cache
,public
,private
和max-age
>。铬和边缘表现出独特的行为。 为了防止缓存冲突,尤其是在AJAX呼叫的情况下,使用不同的URL用于页面内容和AJAX数据。 这避免了缓存JSON替代预期HTML的情况。 >自签名的SSL证书破坏了Chrome和类似浏览器中的缓存。 它们有效地禁用缓存,从而导致本地测试和实时部署之间存在差异。 - HTTP标头管理:
缓存行为由HTTP状态代码和标题决定。 浏览器/代理将提供缓存的数据,用服务器验证数据新鲜度,或获取新鲜数据。 标题是钥匙:
:Cache-Control
可防止所有缓存;
- 和/或
- 在服务器上检查。
no-store
>no-cache
no-store
或no-cache
:允许在任何地方缓存; Last-Modified
将缓存限制到用户的浏览器中。Etag
- :指定秒内的高速缓存有效期。
public
>private
public
>示例(php):private
- >示例(node.js/express):
max-age
页面和ajax数据的
> 即使使用适当的标题设置,也可能会出现浏览器不一致,尤其是在使用后式按钮时。 Chrome和Edge可能会恢复到初始页面状态,而Firefox和Safari保留了最后一个已知的状态。
考虑一个分页表:header('Cache-Control: private,max-age=30'); echo json_encode($data);
初始页面加载:
res .set('Cache-Control', 'private,max-age=30') .json(data);
ajax导航:URL更改(例如,),但是Ajax更新了DOM。
如果AJAX调用使用相同的URL,则在按下后面按钮时,Chrome/Edge可能会使用缓存的JSON而不是HTML。 解决方案:对页面和AJAX请求使用单独的URL(例如,在Ajax URL中添加
)。这确保了独立的缓存。
- 自签名的SSL证书的危险:
http://myapp.com/list/
>虽然方便开发,但自签名的证书可阻止Chrome(以及其他基于眨眼的浏览器)从缓存页面数据中进行。 这会在本地测试(无缓存)和实时部署(启用缓存)之间造成不一致的不一致。
常见问题(常见问题解答):>
提供的常见问题解答部分在很大程度上保持不变,因为它提供了有关缓存最佳实践和故障排除的有价值的信息。 该内容已经是结构化的,并解决了与缓存JSON响应和整体Web开发策略有关的共同问题。
以上是如何解决缓存的难题的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL
